我有以下匹配的字符串:
punctacros="Tasla"_TONTA
punctacros="Tasla"_SONTA
punctacros="Tasla"_JONTA
punctacros="Tasla"_BONTA
我想只替换匹配字符串的一部分(在下划线之前),其余部分应该在每个原始字符串中保持相同。
结果应如下所示:
TROGA_TONTA
TROGA_SONTA
TROGA_JONTA
TROGA_BONTA
答案 0 :(得分:0)
mystring.replace('punctacross="Tasla"', 'TROGA_')
其中mystring是这四行的字符串。它将返回带有替换值的字符串。
答案 1 :(得分:0)
如果要在第一个下划线之前替换所有内容,请尝试以下操作:
#! /usr/bin/python3
data = ['punctacros="Tasla"_TONTA',
'punctacros="Tasla"_SONTA',
'punctacros="Tasla"_JONTA',
'punctacros="Tasla"_BONTA',
'somethingelse!="Tucku"_CONTA']
for s in data:
print('TROGA' + s[s.find('_'):])
答案 2 :(得分:0)
修改强>
这应该有效:
from re import sub
with open("/path/to/file") as myfile:
lines = []
for line in myfile:
line = sub('punctacros="Tasla"(_.*)', r'TROGA\1', line)
lines.append(line)
with open("/path/to/file", "w") as myfile:
myfile.writelines(lines)
结果:
TROGA_TONTA
TROGA_SONTA
TROGA_JONTA
TROGA_BONTA
但请注意,如果您的文件与给定的示例完全相同,则可以将re.sub
行替换为:
line = "TROGA_"+line.split("_", 1)[1]
完全不需要正则表达式。我没有这样做,因为你似乎想要一个Regex解决方案。