【问题标题】:Add character at the beginning of line with specific string in line - Python在行首添加带有特定字符串的字符 - Python
【发布时间】:2021-01-20 12:08:57
【问题描述】:

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

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”的每一行的开头并将其保存为新文件。

【问题讨论】:

  • 每一行以\n结尾。你需要rstrip()每一行。

标签: python text replace


【解决方案1】:

这个解决方案效果很好,你怎么看?

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)

【讨论】:

    【解决方案2】:

    您的输入文件中似乎存在字符问题。也许.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()
    

    【讨论】:

      【解决方案3】:

      额外的新行是由于文件行中已经存在'\n'字符,您可以通过更改为来防止这种情况

      print(line, end='')
      

      我不知道你为什么更喜欢文件输入模块来读取文件,因为我发现默认方法 open 非常令人满意,因为你可以读取和写入文本文件、二进制文件等......至于你的问题:

      with open(file_name, 'w') as file:
          file.write(data)
      

      【讨论】:

        【解决方案4】:

        这里有一个解决方案:

        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()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-30
          • 2017-05-27
          • 2012-03-14
          • 2011-10-14
          • 2020-03-01
          • 2021-11-23
          • 1970-01-01
          相关资源
          最近更新 更多