如何搜索和替换文本文件中包含的字符?

ano*_*non 2 python regex io python-3.x

鉴于纺织品我怎样才能更换%开头的所有代币[].例如,在以下文本文件中:

Hi how are you? 
I %am %fine.
Thanks %and %you
Run Code Online (Sandbox Code Playgroud)

我怎么能附上所有的字符%[]:

Hi how are you? 
I [am] [fine].
Thanks [and] [you]
Run Code Online (Sandbox Code Playgroud)

我试图先过滤掉令牌,然后更换它们,但也许有更多的pythonic方式:

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))
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 6

你可以用

re.sub(r'\B%(\w+)', r'[\1]', s)
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

  • \B - 非字边界,必须在当前位置的左侧立即开始字符串或非字字符
  • %- 一个%
  • (\w+)- 第1组:任何1个或多个字符(字母,数字或_).(\S+)如有必要,替换为匹配1个或多个非空格字符,但注意\S也与标点符号匹配.

Python演示:

import re

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