分裂功能问题

时间:2016-08-05 22:52:39

标签: python

我有一个列表变量name

name = ['Ny-site-1-145237890-service']

我想以某种方式拆分此列表,以便获得name = ['Ny-site-1']。 为此,我使用以下代码:

import re
name = ['Ny-site-1-145237890-service']
site_name = re.split('(-[0-9]-service)')[0]

但上面的代码并没有给我输出我想要的输出。如何获得所需的结果?

2 个答案:

答案 0 :(得分:2)

首先,re.split()需要 2个参数,您只需提供一个。

此外,您需要为+字符集添加[0-9]量词(表示" 1或更多"):

>>> import re
>>>
>>> name = ['Ny-site-1-145237890-service']
>>> re.split(r'-[0-9]+-service', name[0])[0]
'Ny-site-1'

我还会添加maxsplit=1参数以避免不必要的拆分:

>>> re.split(r'-[0-9]+-service', name[0], maxsplit=1)[0]
'Ny-site-1'

您还可以添加字符串检查的结尾,以使表达更可靠:

-[0-9]+-service$

而且,您也可以使用re.sub()解决问题:

>>> re.sub(r'-[0-9]+-service$', '', name[0])
'Ny-site-1'

答案 1 :(得分:0)

尝试在正则表达式中添加+以匹配多个数字。

name = 'Ny-site-1-145237890-service'
site_name = re.split('(-[0-9]+-service)', name)[0]

如果您想使用数组来存储您的名字,可以使用

name = ['Ny-site-1-145237890-service']
site_name = re.split('(-[0-9]+-service)', name[0])[0]

如果您有多个名称并且想要全部打印,可以使用

for i in names:
    print(re.split('(-[0-9]+-service)', i)[0])