Добавить символ в начале строки с определенной строкой в строке — Python

#python #text #replace

#python #текст #заменить

Вопрос:

У меня есть файл с несколькими тысячами строк, подобных этому:

 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
  

Почему после выполнения кода у меня появляются новые пробелы после строки без изменений? Как я могу это удалить?
Второй вопрос: как я могу сохранить этот файл как новый файл?

Подводя итог: мне нужно написать код, который в текстовом файле добавит «//» в начало каждой строки, содержащей «CC», и сохранить его как новый файл.

Комментарии:

1. Каждая строка заканчивается n . Вам нужно для rstrip() каждой строки.

Ответ №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()