替换行中的字符串而不添加新行?

2024-09-30 05:31:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想替换包含patternB的行中的字符串,类似于:

发件人:

some lines
line contain patternA
some lines
line contain patternB
more lines

收件人:

some lines
line contain patternA
some lines
line contain patternB xx oo
more lines

我有这样的代码:

inputfile = open("d:\myfile.abc", "r")
outputfile = open("d:\myfile_renew.abc", "w")
obj = "yaya"
dummy = ""
item = []

for line in inputfile:
    dummy += line
    if line.find("patternA") != -1:
        for line in inputfile:
            dummy += line
            if line.find("patternB") != -1:
                item = line.split()
                dummy += item[0] + " xx " + item[-1] + "\n"
                break
outputfile.write(dummy)

它不会像预期的那样替换包含“patternB”的行,而是在它下面添加新行,如:

some lines
line contain patternA
some lines
line contain patternB
line contain patternB xx oo
more lines

我能用我的代码做什么?你知道吗


Tags: 代码morelinesomeopenitemmyfiledummy
3条回答

当然是这样,因为您在for循环的开头将行附加到dummy,然后在“if”语句中再次将修改后的版本附加到dummy。如果你像对待其他事物一样对待is,为什么还要检查模式A呢?你知道吗

inputfile = open("d:\myfile.abc", "r")
outputfile = open("d:\myfile_renew.abc", "w")
obj = "yaya"
dummy = ""
item = []

for line in inputfile:
    if line.find("patternB") != -1:
        item = line.split()
        dummy += item[0] + " xx " + item[-1] + "\n"
    else:
        dummy += line
outputfile.write(dummy)

最简单的方法是: 1将所有文件读入字符串 2呼叫字符串.替换 三。将字符串转储到文件

如果你想保持逐行迭代器 (对于大文件)

for line in inputfile:
    if line.find("patternB") != -1:
        dummy = line.replace('patternB', 'patternB xx oo')
        outputfile.write(dummy)
    else:
        outputfile.write(line)

这比其他响应慢,但支持大文件处理。你知道吗

相关问题 更多 >

    热门问题