在行首添加特定字符串的字符

我有一个包含几千行的文件,如下所示:


0.5  AA

2.7 AA

45.2 AA

567.1 CC

667.5 AA 

4456 AA

1005.2 CC

我想在每行包含字符串“CC”的开头添加注释符号“//”。


我有这样的代码:


import fileinput


file_name = input("file path: ")


for line in fileinput.FileInput(file_name, inplace=1):

    if 'CC' in line:

        line = line.rstrip()

        line = line.replace(line,'// '+line)

    print (line)

一切正常,但执行代码后文件看起来像这样:


0.5  AA


2.7 AA

    

45.2 AA

    

// 567.1 CC

667.5 AA

    

4456 AA

    

// 1005.2 CC

为什么执行代码后我在行后有新的行空格而没有更改?我怎样才能删除这个?第二个问题是:我如何将此文件另存为新文件?


总结:我需要编写代码,在 txt 文件中将“//”添加到包含“CC”的每一行的开头,并将其保存为新文件。


慕雪6442864
浏览 139回答 4
4回答

慕斯709654

这个解决方案效果很好,您对此有何看法?filepath = input("original file :")filepath2 = input("result file : ")with open(filepath, "r") as f, open(filepath2, "w") as f2:    for line in f:        f2.write(line if not 'CC' in line else "//" + line)

开心每一天1111

这似乎是您的输入文件中的字符问题。也许.strip()反而.rstrip()会效果更好。.rstrip()仅删除字符串右侧的空格,同时.strip()删除左侧和右侧的空格。像这样的东西应该有效:inputFile = open('data.txt', 'r')outputFile = open('outputFile.txt', 'w')for line in inputFile:    outputLine = line.strip() + '\n'    if 'CC' in line:        outputLine = '//' +  outputLine    outputFile.write(outputLine) inputFile.close()outputFile.close()

SMILET

这是一个解决方案:p="name_of_original_file.txt"file=open(p,"r")s=file.read()file.close() new_s=""for line in s.splitlines():    if 'CC' not in line:        new_s+=line+"\n"    if 'CC' in line:        new_s+='// '+line+"\n"    print (line)p="name_of_new_file.txt"file=open(p,"w")file.write(new_s)file.close()

猛跑小猪

额外的新行是由于文件行中已存在“\n”字符,您可以通过更改为来防止这种情况print(line, end='')我不知道为什么你更喜欢文件输入模块来读取文件,因为我发现默认方法 open 非常令人满意,因为你可以读写文本文件,二进制文件等......至于你的问题:with open(file_name, 'w') as file:     file.write(data)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python