[英]Extract substring between specific characters
我有一些像这样的字符串:
\i{}Agrostis\i0{} <L.>
我想摆脱'\\ i {}','\\ io {}'字符,这样我就可以得到:
Agrostis <L.>
我尝试了以下代码(从此处改编):
m = re.search('\i{}(.+?)\i0', item_name)
if m:
name = m.group(1).strip('\\')
else:
name = item_name
它部分起作用,因为当我运行它时,我得到的只是:
Agrostis
没有
<L.>
部分(我想保留)。
有什么提示吗?
预先感谢您可以提供的任何帮助!
使用s.replace('\\i{}', '')
和s.replace('\\io{}', '')
您可以通过不同的方式执行此操作。
最简单的一种是使用str.replace
s = '''\i{}Agrostis\i0{} <L.>'''
s2 = s.replace('''\i{}''', '').replace('''\i0{}''', '')
另一种方法是使用re.sub()
您需要使用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.>'
您可以将字符类与re.sub()
一起使用
import re
regex = r'\\i[\d{}]+'
string = "\i{}Agrostis\i0{} <L.>"
string = re.sub(regex, '', string)
print string
在ideone.com上查看演示 。
您可以使用s.replace('\\i{}', '')
和s.replace('\\io{}', '')
,或者继续使用正则表达式方法,将模式更改为:
re.search('\\i{}(.+?)\\i0(.++)', item_name)
并使用m.group(1).strip('\\\\') + m.group(2).strip('\\\\')
作为结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.