在re.findall中包含已拆分的文本

2024-06-16 13:21:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一根绳子

mystring = 'Aston VillaLiverpoolMan City'

我的目标是得到下面的输出

"Aston Villa", "Liverpool", "Man City". 

当大写字母前面没有空格时,在大写字母上打上

我正在接近re.findall,但它没有提供我想要的输出

import re 
    
myString = 'Aston VillaLiverpoolMan City'
result = re.findall("(?<!\s)[A-Z][a-z]*",myString)
print(result)

这就产生了

"Aston", "Liverpool", "Man" 

(错过阿斯顿尽头的别墅和曼城)

谢谢


Tags: recity目标result大写字母空格manmystring
2条回答

@vanisk的答案是完美的

你也可以试试

mystring = 'Aston VillaLiverpoolMan City'
s = list(mystring)
for i in range(1,len(s)):
    if ord(s[i]) in range(65, 91):
        if s[i-1]!=' ':
            s[i]='\n'+s[i]

splitstring = ''.join(s).split('\n')
print(splitstring)

这也给了

['Aston Villa', 'Liverpool', 'Man City']

实际上,@Chris发布的link确实回答了您的查询,只是需要稍加修改

s = 'Aston VillaLiverpoolMan City'
pos = [i for i,e in enumerate(s+'A') if e.isupper() and s[i-1]!=" "]
parts = [s[pos[j]:pos[j+1]] for j in range(len(pos)-1)]
print (parts)

导致

['Aston Villa', 'Liverpool', 'Man City']

荣誉归于@pwdyson

相关问题 更多 >