我有一个列表变量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]
但上面的代码并没有给我输出我想要的输出。如何获得所需的结果?
答案 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])