2017-01-04 2 views
0

Я попытался написать код python, чтобы сделать следующее, и я застрял. Пожалуйста помоги.Как заменить определенное слово в определенной строке, начинающейся с «ключевого слова» python

У меня есть этот файл «names.txt»

 
rainbow like to play football 

however rainbow ... etc 

names = rainbow, john, alex 

rainbow sdlsdmclscmlsmcldsc. 

Мне нужно заменить радужную слово (Удален) в строке, которая начинается с «именем =»

Мне нужен код для поиска ключевое слово «name =» и заменить слово «радуга» на «(Удалено») в той же строке, не изменяя слова rainbow в других строках, а затем переписать файл «names.txt» с изменениями, которые будут похожими:

 
rainbow like to play football 

however rainbow ... etc 

names = (Removed), john, alex 

rainbow sdlsdmclscmlsmcldsc. 

Благодаря

+0

показать нам код, и вы проверяете 'name =' или 'names =' – depperm

+1

Добро пожаловать в Stack Overflow! Сначала вы можете взять [тур] (http://stackoverflow.com/tour) и узнать [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и создать [ Minimal, Complete и Verifiable] (http://stackoverflow.com/help/mcve). Нам будет легче помочь вам. И, пожалуйста, проверьте свою грамматику. – MrLeeh

ответ

0

Избежания регулярного выражения, вот один из способов сделать это

with open("names.txt") as f: 
    content = f.readlines() 

Об этом говорится в How do I read a file line-by-line into a list? и было найдено с помощью Google поиска «стек Переполнение лучшего способом чтения в файл питон». Затем возьмите это содержимое и выполните следующее.

new_list_full_of_lines = [] # This is what you are going to store your corrected list with 
for linea in content: # This is looping through every line 
    if "names =" in linea: 
    linea.replace ("rainbow", "(Removed)") # This corrects the line if it needs to be corrected - i.e. if the line contanes "names =" at any point 
    new_list_full_of_lines.append(linea) # This saves the line to the new list 
with open('names.txt', 'w') as f: # This will write over the file 
    for item in new_list_full_of_lines: # This will loop through each line 
    f.write("%s\n" % item) # This will ensure that there is a line space between each line. 

Ссылка - String replace doesn't appear to be working

Другие ссылки - Writing a list to a file with Python

1

Это будет работать как в Python 2.7 (который вы использовали в качестве метки) и Python 3.

import fileinput 
import sys 

for line in fileinput.input("names.txt", inplace=1): 
    if "names = " in line: 
     line = line.replace("rainbow", "(Removed)") 
    sys.stdout.write(line) 

См " Опциональная фильтрация на месте «here (Python 2.7.13) или here (Python 3.6).

+0

Условие 'if' является слабым. –

+0

Это то, что задал вопрос. Без дальнейших разъяснений это лучшее, что можно сделать. –

Смежные вопросы