我正在尝试使用双引号找到文本文件“ ”swp_pt“,”3“ '中特定行的显式子字符串所有。我想将数字更改为任何其他数字,但我需要专门在引用的 swp_pt 变量之后转到第一个整数并仅更改它。我仍然只是想在文本文件中找到正确的 swp_pt 调用,但即便如此也无法做到。
到目前为止,这是我的代码:
ddsFile = open('Product_FD_TD_SI_s8p.dds')
for line in ddsFile:
print(line)
marker = re.search('("swp_pt", ")[0-9]+', line)
print(marker)
print(marker.group())
ddsFile.close()
如果有人知道如何做到这一点,我将非常感谢你的帮助。 麦克
答案 0 :(得分:0)
你真的需要在Python中这样做吗? sed -i
会做你想做的事情并且相当简单。
但如果你需要它,我会做类似的事情:
def replace_swp_pt(line):
regex = r'"swp_pt", "(\d+)"'
replacement = '"swp_pt", "4"'
return re.sub(regex, replacement, line)
def transform_file(file_name, transform_line_func):
with open(file_name, 'r') as f:
# Buffer full contents in memory. This only works if your file
# fits in memory; otherwise you will need to use a temporary file.
file_contents = f.read()
with open(file_name, 'w') as f:
for line in file_contents.split('\n'):
transformed_line = transform_line_func(line)
f.write(transformed_line + '\n')
if __name__ == '__main__':
transform_file('Product_FD_TD_SI_s8p.dds', replace_swp_pt)