替换列表项的结尾几个字符?

时间:2014-06-20 20:38:04

标签: python regex string python-2.7 replace

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

例如我的列表是:

['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+)$

任何帮助都将不胜感激。

3 个答案:

答案 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行中,您实际上无法更改字符串中的内容,但您可以使用新字符串替换整个字符串。

正则表达式非常适合模式匹配,所以如果你真的需要每次都替换相同的模式,那就很酷。像最后两个字母或其他什么。看起来你不需要这个问题。