Python:除分隔符之外的字符串拆分

2024-09-29 03:28:06 发布

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

我是Python新手,目前正在尝试拆分以下字符串:

910501857403 TBS465 3 TL5 14 W K HFP No D8-VH

看起来像是:

['910501857403','TBS465','3','TL5','14 W','K','HFP','No','D8-VH']

如果我使用:

ln.split(' ')

如果使用空格作为分隔符,['14w']变为['14','W']会有问题。在

有没有一种方法可以覆盖这个特定实例中的空间,例如使用regex?在


Tags: 实例方法no字符串空间split空格ln
3条回答

为了简单地强制执行您想要的,我想为什么不直接将两个字符串连接起来,然后删除“key”值呢

s = "910501857403 TBS465 3 TL5 14 W K HFP No D8-VH"
l = s.split()
keys = ["W","V"]
for i in range(len(l)-1):
    if l[i] in keys:
        l[i-1] += " " +l[i]
        l.pop(i)
print(l)

输出:

['910501857403','TBS465','3','TL5','14 W','K','HFP','No','D8-VH']

如果总是4号和5号元素不应拆分,您可以简单地执行以下操作:

s = "910501857403 TBS465 3 TL5 14 W K HFP No D8-VH"
l = s.split()
l[4] = l[4] + " " + l[5]
l.pop(5)

如果这个假设是不正确的,那么就必须非常精确地指定模式。在

编辑

根据上面的注释,您可以先按上述方式拆分字符串,然后使用列表理解:

^{pr2}$

这是有效的:

teststring = '910501857403 TBS465 3 TL5 14 W K HFP No D8-VH'
re.findall(r'\w+\b(?! [WV])|\w+\b [WV]', teststring)

['910501857403', 'TBS465', '3', 'TL5', '14 W', 'K', 'HFP', 'No', 'D8', 'VH']

工作原理:基本上,\w+\b匹配alnum字符,后跟一个分词符。|表示我们正在匹配两个模式中的任何一个。第一个模式使用一个否定的先行断言,如果以下字符是空格并且是W或V中的一个,则不匹配。第二个词匹配后面跟W或V的单词

如果你对输入的信息处理变得太复杂了,我同意你的评论,我只会分开处理。在

相关问题 更多 >