尝试使用正则表达式替换文本文件中的数字,以便在Python中找到正确的行

时间:2015-04-21 20:09:50

标签: python regex replace python-3.4

我正在尝试使用双引号找到文本文件“ ”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()

如果有人知道如何做到这一点,我将非常感谢你的帮助。 麦克

1 个答案:

答案 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)