我正在尝试替换列表项的最后几个字符,但我不确定如何最好地这样做..
例如我的列表是:
['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+)$
任何帮助都将不胜感激。
答案 0 :(得分:1)
使用$
匹配字符串结尾
import re
re.sub('DE$', 'dE', '4 Example Here 444/13903DE')
答案 1 :(得分:1)
您可以使用regular expression
具体来说,$
符号代表字符串的结尾
您可以使用re.sub(pattern, repl, string, count, flags)
import re
re.sub('x$', 'X', '1 Ex Exam Ple 333/33x')
此外,您可以指定计数,但由于我们正在使用$
,因此无关紧要。在这种情况下也不需要标志。
答案 2 :(得分:-1)
我最喜欢你的第一直觉。根据您发布的两个示例推断,您没有每次更换相同的模式?您可以使用索引引用特定字符,然后将其更改为您想要的字符。
test = ['44 Example 1/1', '4 Example Here 444/13903', '1 Ex Exam Ple 333/33x']
test[2] = test[2][:-1]
请注意,在第2行中,您实际上无法更改字符串中的内容,但您可以使用新字符串替换整个字符串。
正则表达式非常适合模式匹配,所以如果你真的需要每次都替换相同的模式,那就很酷。像最后两个字母或其他什么。看起来你不需要这个问题。