如何删除字符串中第一个空格的所有匹配项,以便:
strings = ["1234 zoocore", "4356 00's punk"]
成为:["zoocore", "00's punk"]
?
我试过正则表达式:
for s in strings:
new_s = re.sub(r'\d+','', s)
但也会删除00'
,这是我不想要的。
答案 0 :(得分:10)
您可以将str.split
与maxsplit
参数一起使用:
>>> strings = ["1234 zoocore", "4356 00's punk"]
>>> [s.split(None, 1)[1] for s in strings]
['zoocore', "00's punk"]
如果您的字符串不包含空格,则可以使用-1
作为索引:
>>> strings = ["1234 zoocore", "4356 00's punk", "rock"]
>>> [s.split(None, 1)[-1] for s in strings]
['zoocore', "00's punk", 'rock']
答案 1 :(得分:1)
您的错误在于您没有在字符串的开头锚定匹配并且您没有包含空格。这是一个固定版本:
>>> [re.sub(r'^\d* ', '', s) for s in strings]
['zoocore', "00's punk"]
另一种方法是找到空格(如果有的话),然后切片。
>>> strings = ["1234 zoocore", "4356 00's punk", "rock"]
>>> [s[s.find(' ') + 1:] for s in strings]
['zoocore', "00's punk", 'rock']