我有一些字符串:
false
我想摆脱'\ i {}','\ io {}'字符,以便我可以得到:
\i{}Agrostis\i0{} <L.>
我尝试过以下代码(改编自here):
Agrostis <L.>
它的作用部分,因为当我运行它时,我得到:
m = re.search('\i{}(.+?)\i0', item_name)
if m:
name = m.group(1).strip('\\')
else:
name = item_name
没有
Agrostis
部分(我想保留)。
任何提示?
提前感谢您提供的任何帮助!
答案 0 :(得分:2)
使用s.replace('\i{}', '')
和s.replace('\io{}', '')
答案 1 :(得分:1)
你可以用不同的方式做到这一点。
最简单的方法是使用str.replace
s = '''\i{}Agrostis\i0{} <L.>'''
s2 = s.replace('''\i{}''', '').replace('''\i0{}''', '')
另一种方法是使用re.sub()
答案 2 :(得分:1)
您需要使用re.sub
功能。
In [34]: import re
In [35]: s = "\i{}Agrostis\i0{} <L.>"
In [36]: re.sub(r'\\i\d*{}', '', s)
Out[36]: 'Agrostis <L.>'
答案 3 :(得分:1)
您可以使用字符类以及re.sub()
import re
regex = r'\\i[\d{}]+'
string = "\i{}Agrostis\i0{} <L.>"
string = re.sub(regex, '', string)
print string
答案 4 :(得分:0)
您可以使用s.replace('\i{}', '')
和s.replace('\io{}', '')
,如Julien所说,或者继续使用正则表达式方法,将您的模式更改为:
re.search('\i{}(.+?)\i0(.++)', item_name)
并使用m.group(1).strip('\\') + m.group(2).strip('\\')
作为结果。