2024-09-29 03:28:06 发布
网友
我是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?在
为了简单地强制执行您想要的,我想为什么不直接将两个字符串连接起来,然后删除“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)
如果这个假设是不正确的,那么就必须非常精确地指定模式。在
编辑
根据上面的注释,您可以先按上述方式拆分字符串,然后使用列表理解:
这是有效的:
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的单词
\w+\b
|
如果你对输入的信息处理变得太复杂了,我同意你的评论,我只会分开处理。在
为了简单地强制执行您想要的,我想为什么不直接将两个字符串连接起来,然后删除“key”值呢
输出:
['910501857403','TBS465','3','TL5','14 W','K','HFP','No','D8-VH']
如果总是4号和5号元素不应拆分,您可以简单地执行以下操作:
如果这个假设是不正确的,那么就必须非常精确地指定模式。在
编辑
根据上面的注释,您可以先按上述方式拆分字符串,然后使用列表理解:
^{pr2}$这是有效的:
工作原理:基本上,
\w+\b
匹配alnum字符,后跟一个分词符。|
表示我们正在匹配两个模式中的任何一个。第一个模式使用一个否定的先行断言,如果以下字符是空格并且是W或V中的一个,则不匹配。第二个词匹配后面跟W或V的单词如果你对输入的信息处理变得太复杂了,我同意你的评论,我只会分开处理。在
相关问题 更多 >
编程相关推荐