gpt4 book ai didi

python - 用几个分隔符 python 分割一个字符串

转载 作者:行者123 更新时间:2023-12-04 08:35:30 24 4
gpt4 key购买 nike

我的目标是用大写字母和下划线分割给定的文本。
例如,对于给定的字符串:

s = 'Where_IsKCR'
这应该返回 ['Where', 'Is', 'KCR'] . KCR在一起是因为它是一个实体。
我正在尝试使用正则表达式,我的代码如下所示:
s='Where_IsKCR'
list=[]
tmp = (re.split('_|([A-Z][^A-Z]*)',s))
num=len(tmp)
i=0
while(i<num):
if(tmp[i]==''):
i=i+1
elif(len(tmp[i])>1):
list.append(tmp[i])
i=i+1
elif(len(tmp[i])==1):
word=""
while(len(tmp[i])<=1):
if(i==num-1):
break
elif(tmp[i]==''):
i=i+1
continue
else:
word = word + tmp[i]
i=i+1
list.append(word)
return list
因此,对于给定的字符串 s代码返回 ['Where_', 'Is', 'KCR'] .代码不会拆分为下划线。任何想法为什么?

最佳答案

您可以使用

list(filter(None, re.split(r'_|(?<=[^A-Z])(?=[A-Z])', text)))
regex demo .细节:
  • _ - 一个下划线(它被消耗了,因此在拆分时会被删除)
  • | - 或
  • (?<=[^A-Z])(?=[A-Z]) - 紧跟在非大写 ASCII 字母的字符前面并紧跟在大写 ASCII 字母之后的位置。

  • Python demo :
    import re
    text = r'Where_IsKCR'
    print( list(filter(None, re.split(r'_|(?<=[^A-Z])(?=[A-Z])', text))) )
    # => ['Where', 'Is', 'KCR']

    关于python - 用几个分隔符 python 分割一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64818860/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com