Python: сопоставьте длинную строку со специальными символами и пробелами, а затем добавьте два символа в начало - PullRequest
0 голосов
/ 23 февраля 2012

Я не уверен, как подойти к этому, я пытаюсь сопоставить эту длинную строку в текстовом файле, который имеет много пробелов и специальных символов, и добавить символы вперед, т.е. "//"

мне нужно соответствовать этой строке:

$menu_items['gojo_project']                    => array('http://www.gojo.net/community/plugin-inventory/ops-gojo/gojo', 'gojo',3),

и превратить его в это:

//$menu_items['gojo_project']                    => array('http://www.gojo.net/community/plugin-inventory/ops-gojo/gojo', 'gojo',3),

обратите внимание, я только что добавил два символа '/'.

Я пытался использовать re.escape для форматирования строки, но она действительно очень длинная и все еще выдает ошибку синтаксиса. Я собираюсь сделать это правильно, используя 're'? или есть ли лучший питонический способ сопоставить строку, подобную этой, в текстовом файле и добавить ее к ней?

Изменить: Забыл упомянуть, что мне нужно редактировать файл в строке. Короче говоря, это длинный php-скрипт, который я пытаюсь найти в этой строке и закомментировать (т.е. //). Поэтому я не могу использовать некоторые из предложенных решений (я думаю), поскольку они записывают изменения в отдельный файл.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Попробуйте fileinput, это позволит вам прочитать файл и переписать строки на месте:

import fileinput

for line in fileinput.input("myfile.txt", inplace = 1):
    if line == "$menu_items['gojo_project']                    => array('http://www.gojo.net/community/plugin-inventory/ops-gojo/gojo', 'gojo',3),":
        line = '//' + line
    print line,
0 голосов
/ 23 февраля 2012

Если вы пытаетесь сопоставить именно эту строку, было бы проще использовать оператор равенства строк, а не регулярные выражения.

longString = "$menu_items['gojo_project']                    => array('http://www.gojo.net/community/plugin-inventory/ops-gojo/gojo', 'gojo',3),"

input = open("myTextFile.txt", "r")
output = open("myOutput.txt", "w")
for line in input:
    if line.rstrip() == longString: #rstrip removes the trailing newline/carriage return
        line = "//" + line
    output.write(line)
input.close()
output.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...