как заменить символы в строках на '#' с помощью регулярных выражений в Python - PullRequest
4 голосов
/ 17 сентября 2010

Как я могу заменить содержимое строк на # в Python?Предположим, нет комментариев, нет нескольких строк для одной строки.Например, если в файле Python есть строка:

print 'Hello' + "her mom's shirt".

Это будет преобразовано в:

print '#####' + "###############".

Это похоже на фильтр для обработки каждой строки в файле Python.

Ответы [ 3 ]

5 голосов
/ 17 сентября 2010

Если вы используете Python, и вы анализируете Python, вам не нужно использовать regexp, поскольку есть встроенный парсер .

2 голосов
/ 17 сентября 2010
>>> import re
>>> s="The Strings"
>>> s=re.sub("\w","#",s)
>>> s
'### #######'
>>> s='Hello' + "her mom's shirt"
>>> s
"Helloher mom's shirt"
>>> re.sub("\w","#",s)
"######## ###'# #####"

---- Edit

OK, теперь я понимаю, что вы хотите, чтобы вывод был из файла Python.Попробуйте:

import fileinput
import re 

for line in fileinput.input():
    iter = re.finditer(r'(\'[^\']+\'|"[^"]+")',line)
    for m in iter:
       span = m.span()
       paren = m.group()[0]
       line = line[:span[0]]+paren+'#'*(span[1]-span[0]-2)+paren+line[span[1]:] 
       print line.rstrip()

Это не относится к разрывам строк, форме "" ", и проверяется только 1 или у меня есть два файла ...

В общемлучше использовать парсер для такой работы.

Best

1 голос
/ 17 сентября 2010

Не нужно регулярное выражение для замены "I'm superman" на "############"

Попробуйте

input = "I'm superman"
print "#" * len(input)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...