【问题标题】:Replacing end few characters of list items? [closed]替换列表项的最后几个字符? [关闭]
【发布时间】:2014-06-20 20:38:03
【问题描述】:

我正在尝试替换列表项的最后几个字符,但不确定如何最好地做到这一点..

例如,如果我的列表是:

['44 Example 1/1', '4 Example Here 444/13903', '1 Ex Exam Ple 333/33x']

我想把第三个的x改成X,如下图:

['44 Example 1/1', '4 Example Here 444/13903', '1 Ex Exam Ple 333/33X']

另一个例子是:

['44 Example 1/1A', '4 Example Here 444/13903DE', '1 Ex Exam Ple 333/33']

DE 更改为dE

['44 Example 1/1A', '4 Example Here 444/13903dE', '1 Ex Exam Ple 333/33']

另一个例子是:

['44 Example 1/1', '4 Example Here 444/13903', '1 Ex Exam Ple 199/1']

199/1 更改为1/1

['44 Example 1/1', '4 Example Here 444/13903', '1 Ex Exam Ple 1/1']

我尝试使用简单的.replace(x, y),但它在中间部分和开头部分出错很多。

我确实创建了一个正则表达式,但仍不确定如何操作...(\S+) (.*?) (\S+)$

任何帮助将不胜感激。

【问题讨论】:

  • 每个列表的标准似乎都不同。我看不出一个答案如何解决您的所有问题。

标签: python regex string python-2.7 replace


【解决方案1】:

使用$ 匹配字符串结尾

import re
re.sub('DE$', 'dE', '4 Example Here 444/13903DE')

【讨论】:

    【解决方案2】:

    您可以使用regular expression

    特别是 $ 符号来表示字符串的结尾
    你可以使用re.sub(pattern, repl, string, count, flags)

    import re
    re.sub('x$', 'X', '1 Ex Exam Ple 333/33x')
    

    此外,您还可以指定计数,但是由于我们使用的是$,这并不重要。在这种情况下也不需要标志。

    【讨论】:

      【解决方案3】:

      我最喜欢你的第一直觉。从您发布的两个示例中推断,您没有每次替换都相同的模式吗?您可以使用索引引用特定字符,然后将它们更改为您想要的。

      test = ['44 Example 1/1', '4 Example Here 444/13903', '1 Ex Exam Ple 333/33x']
      test[2] = test[2][:-1]
      

      注意第 2 行,您实际上不能更改字符串中的内容,但您可以用新字符串替换整个字符串。

      Regex 在模式匹配方面非常出色,所以如果您确实需要每次都替换 same 模式,那就太酷了。就像最后两个字母或其他什么。对于这个问题,您似乎不需要它。

      【讨论】:

        猜你喜欢
        • 2013-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多