簡體   English   中英

使用通配符搜索和替換文本文件中的字符串

[英]Search and Replace Strings in a Text File Using Wildcards

嘗試在文本文件的內容上使用通配符在python中進行搜索/替換:

如果文本文件的內容如下所示:

"all_bcar_v0038.ma";
"all_bcar_v0002.ma";
"all_bcar_v0011.ma";
"all_bcar_v0011.ma";

希望將所有版本號替換為v1000以獲得此信息:

"all_bcar_v1000.ma";
"all_bcar_v1000.ma";
"all_bcar_v1000.ma";
"all_bcar_v1000.ma";

並把文件寫出來。

我在下面嘗試過,但是發生的是該腳本僅捕獲第一個版本號,而其他版本保持不變:

def replaceAll(file,searchExp,replaceExp):
for line in fileinput.input(file, inplace=1):
    if searchExp in line:
    line = line.replace(searchExp,replaceExp)
    sys.stdout.write(line)

rigs = ['all_bcar']
rigs_latest = ['all_bcar_v1000']

old_pattern = []
old_compiled = []
old = []
old_version = []

for rig in range(len(rigs)):
    old_pattern.append("/" + rigs[rig] + "_(.*).ma")
    fin = open(txt_file, "r")

    old_compiled.append(re.compile(old_pattern[rig]))
    old.append(old_compiled[rig].search(fin.read()))
    old_version.append(old[rig].group(1).strip())
    old_rig = (rigs[rig] + "_" + old_version[rig])
    replaceAll(txt_file,old_rig,rigs_latest[rig])


fin.close()

不確定如何保持搜索循環以查找其他版本並避免已被替換的版本,以跳過等於“ v1000”的任何版本。

使用正則表達式將極大地改善您的生活。 您應該能夠分兩行執行此操作(假設我正確理解了該問題):

import re

for line in fileinput.input(file, inplace=1):
  re.sub(r"_v\d{4}", "_v1000", line)

嘗試-

import re

re.sub("_v\d{4}", "_v1000.", string)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM