繁体   English   中英

提取特定字符之间的子字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM