如何在Python中使用正则表达式用'#'替换字符串中的字符

时间:2010-09-16 22:27:47

标签: python regex string

如何在Python中用#替换字符串的内容?假设没有注释,一个字符串没有多行。就好像python文件中有一行:

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

这将被翻译成:

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

它就像一个处理python文件中每一行的过滤器。

3 个答案:

答案 0 :(得分:5)

如果你正在使用Python而你正在解析的东西是Python,那么就不需要使用regexp there's a built-in parser

答案 1 :(得分:2)

>>> 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)
"######## ###'# #####"

----编辑

好的,现在我明白你希望输出来自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()

这不涉及换行符,“”形式,只能再测试一两个文件......

通常,最好将解析器用于此类工作。

最佳

答案 2 :(得分:1)

不需要使用正则表达式将"I'm superman"替换为"############"

尝试

input = "I'm superman"
print "#" * len(input)