我有一个文本列表,可以用以下方式重新编写:re.sub('0000', '1111',data).
一个替代模式^(.{4})(.{4})(.{3})(.{3})与\1\4\2\3在壳一个输入正常工作也.但是,我在列表中使用此模式的尝试在第一行上给出了不良结果,并且从不替换后者.我在这里错过了什么?
"0000-22N-06W-01"
"0000-22N-06W-02"
"0000-22N-06W-03"
"0000-22N-06W-04"
import re
o = open("output.txt","w")
data = open("input.txt").read()
o.write(re.sub(r'^(.{4})(.{4})(.{3})(.{3})', r'\1\4\2\3',data))
o.close()
Run Code Online (Sandbox Code Playgroud) 我有一种情况,用户提交地址,我必须将用户输入替换为我的键.我可以使用没有后缀的地址加入.
覆盖的WAGON TRAIL
CHISHOLM TRAIL
LAKE TRAIL
CHESTNUT ST
林肯街
至:
覆盖的WAGON
CHISHOLM
湖
板栗
林肯
但是,我无法理解如何编写此代码以仅替换最后一个单词.我明白了:
林肯
板栗
CHISHOLM
LAKEAIL
CHISHOLMAIL
覆盖的WAGONL
我试过regex verbose,re.sub和$.
import re
target = '''
LINCOLN STREET
CHESTNUT ST
CHISHOLM TR
LAKE TRAIL
CHISHOLM TRAIL
COVERED WAGON TRL
'''
rdict = {
' ST': '',
' STREET': '',
' TR': '',
' TRL': '',
}
robj = re.compile('|'.join(rdict.keys()))
re.sub(' TRL', '',target.rsplit(' ', 1)[0]), target
result = robj.sub(lambda m: rdict[m.group(0)], target)
print result
Run Code Online (Sandbox Code Playgroud)