如何在字符串“ 21043213213”中找到连续的字符串“ 210”。该字符串将始终以“ 210”开头。
我遇到的问题是,如果“ 210”位于字符串的中间,它将仍然打印该字符串。在下面的示例中,由于在字符串中找到了210,因此将“ K”更改为“ L”。我怎样才能告诉正则表达式在开始时只找到“ 210”。
示例:
输入:
1fzzvk K 21000345678
1fzzvk K 34210887632
预期输出:
1fzzvk K 21000345678
1fzzvk L 34210887632
代码:
with open(file, 'r') as file:
with open(dir+'wupannew.txt', 'w') as fout:
for f in file:
if re.search('210', f):
rflag = re.sub('L', 'K', f)
fout.write(rflag)
print(f)
if not re.search('210', f):
rflag = re.sub('K', 'L', f)
fout.write(rflag)
答案 0 :(得分:1)
您可以使用:
import re
s = "21043213213"
r = re.search('210', s)
if r:
print(r.group())
修改后:
import re
s1 = '1fzzvk K 21000345678'
s2 = '1fzzvk K 34210887632'
print(re.sub(r'K 210', 'L 210', s1))
print(re.sub(r'K 210', 'L 210', s2))
输出:
1fzzvk L 21000345678
1fzzvk K 34210887632