给出一个纺织品,我该如何替换所有%
开头具有[]
的令牌。例如,在以下文本文件中:
Hi how are you?
I %am %fine.
Thanks %and %you
如何用%
用[]
括起所有字符:
Hi how are you?
I [am] [fine].
Thanks [and] [you]
我尝试先过滤令牌,然后替换它们,但是也许还有一种更Python化的方式:
with open('../file') as f:
s = str(f.readlines())
a_list = re.sub(r'(?<=\W)[$]\S*', s.replace('.',''))
a_list= set(a_list)
print(list(a_list))
答案 0 :(得分:6)
您可以使用
re.sub(r'\B%(\w+)', r'[\1]', s)
请参见regex demo
详细信息
\B
-非单词边界,当前位置的左侧必须紧跟字符串的开头或非单词char %
-一个%
字符(\w+)
-第1组:任意1个或多个单词字符(字母,数字或_
)。如有必要,请用(\S+)
替换以匹配1个或多个非空格字符,但请注意\S
也匹配标点符号。import re
s = "Hi how are you? \nI %am %fine.\nThanks %and %you"
result = re.sub(r"\B%(\w+)", r"[\1]", s)
print(result)