本文介绍了Python - re.split:开始和结束列表的额外空字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试获取一串整数和/或浮点数并创建一个浮点数列表.字符串中将包含这些需要忽略的括号.我正在使用 re.split,但如果我的字符串以括号开头和结尾,我会得到额外的空字符串.这是为什么?

I'm trying to take a string of ints and/or floats and create a list of floats. The string is going to have these brackets in them that need to be ignored. I'm using re.split, but if my string begins and ends with a bracket, I get extra empty strings. Why is that?

代码:

import re
x = "[1 2 3 4][2 3 4 5]"
y =  "1 2 3 4][2 3 4 5"
p = re.compile(r'[^\d\.]+')
print p.split(x)
print p.split(y)

输出:

['', '1', '2', '3', '4', '2', '3', '4', '5', '']
['1', '2', '3', '4', '2', '3', '4', '5']

推荐答案

如果使用 re.split,则字符串开头或结尾的分隔符会导致开头或结果中数组的结尾.

If you use re.split, then a delimiter at the beginning or end of the string causes an empty string at the beginning or end of the array in the result.

如果你不想要这个,使用 re.findall 和一个匹配每个不包含分隔符的序列的正则表达式.

If you don't want this, use re.findall with a regex that matches every sequence NOT containing delimiters.

示例:

import re

a = '[1 2 3 4]'
print(re.split(r'[^\d]+', a))
print(re.findall(r'[\d]+', a))

输出:

['', '1', '2', '3', '4', '']
['1', '2', '3', '4']

正如其他人在他们的回答中指出的那样,这可能不是这个问题的完美解决方案,但它是问题标题中描述的问题的一般答案,我也必须在我使用 Google 发现了这个问题.

这篇关于Python - re.split:开始和结束列表的额外空字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-14 22:03