如何搜索并用封闭的字符替换文本文件?

时间:2018-11-15 13:46:53

标签: python regex python-3.x io

给出一个纺织品,我该如何替换所有%开头具有[]的令牌。例如,在以下文本文件中:

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))

1 个答案:

答案 0 :(得分:6)

您可以使用

re.sub(r'\B%(\w+)', r'[\1]', s)

请参见regex demo

详细信息

  • \B-非单词边界,当前位置的左侧必须紧跟字符串的开头或非单词char
  • %-一个%字符
  • (\w+)-第1组:任意1个或多个单词字符(字母,数字或_)。如有必要,请用(\S+)替换以匹配1个或多个非空格字符,但请注意\S也匹配标点符号。

Python demo

import re

s = "Hi how are you? \nI %am %fine.\nThanks %and %you"
result = re.sub(r"\B%(\w+)", r"[\1]", s)
print(result)