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