Python: функция замены для редактирования файлов - PullRequest
2 голосов
/ 09 ноября 2010

У меня есть файл results.txt, который выглядит следующим образом:

[["12 - 22 - 30 - 31 - 34 - 39 - 36"],
["13 - 21 - 28 - 37 - 39 - 45 - 6"],
["2 - 22 - 32 - 33 - 37 - 45 - 11"],
["3 - 5 - 11 - 16 - 41 - 48 - 32"],
["2 - 3 - 14 - 29 - 35 - 42 12"],
["14 - 30 - 31 - 36 - 44 - 47 26"]]

Я хочу заменить "-" в файле results.txt на ",", чтобы он выглядел как список питонов.

Я пытаюсь использовать приведенный ниже код, но вывод выглядит точно так же, как и result.txt

output = open("results2.txt", 'w')
f = open("results.txt", 'r')
read = f.readlines()

for i in read:
    i.replace(" - ",'","')
    output.write(i)

Ответы [ 3 ]

6 голосов
/ 09 ноября 2010
for i in read:
    # the string.replace() function don't do the change at place
    # it's return a new string with the new changes.
    a = i.replace(" - ",",")  
    output.write(a)
5 голосов
/ 09 ноября 2010

Строковые методы возвращают новую строку.Напишите это вместо этого.

output.write(i.replace(" - ",","))
4 голосов
/ 09 ноября 2010

i.replace(" - ",'","') не изменяется i (помните, что строки неизменяемы), поэтому вы должны использовать

i = i.replace(" - ",'","')

Если файл не очень большой (я предполагаю - поскольку вы все равно читаете все это в память с помощью readlines()), вы можете просто сделать весь файл сразу

output = open("results2.txt", 'w')
f = open("results.txt", 'r')
output.write(f.read().replace(" - ".'","'))
f.close()
output.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...