我有以下代码行,它将字符串data2
拆分为空白实例的列表:
string_list = data2.split()
但是,在某些数据中,日期格式为"28, Dec"
。这里的代码是在我不想要它的日期和月份之间的空格上分割。有没有办法可以说“在白色空间上分裂,但如果它是在逗号之后就没有”?
答案 0 :(得分:3)
您需要使用regular expressions。
>>> re.split('(?<!,) ', 'blah blah, blah')
['blah', 'blah, blah']
从链接:
(?<!...)
匹配如果字符串中的当前位置不在前面 通过匹配....这被称为负面的后观断言。 与正面的后观断言类似,包含的模式必须 只匹配一些固定长度的字符串。开始的模式 负面的lookbehind断言可能在开头时匹配 被搜索的字符串。
答案 1 :(得分:1)
将re.split
与负面的lookbehind表达式一起使用:
re.split(r'(?<!,)\s','I went on 28, Dec')
Out[53]: ['I', 'went', 'on', '28, Dec']
答案 2 :(得分:0)
您可以使用正则表达式进行拆分,并使用后视表达式来确保您不会在逗号前面的空白字符上拆分:
>>> import re
>>> s = 'foo bar 28, Dec bar baz'
>>> re.split('(?<!,)\s', s)
['foo', 'bar', '28, Dec', 'bar', 'baz']
答案 3 :(得分:0)
很抱歉重新发布这个帖子,但我试图解码sqlite单元格,对我来说似乎很奇怪。我解释一下。我试图将两个不同的数字编码到一个单元格中,方法是创建一个中间为0的字符串,然后将其数字化,例如:
a=4
b=7
c=str(4)+'0'+str(7)
问题是当第一个数字是10时,所以我使用它
re.split('0([1-9])','1003')
['10','3','']
为什么我得到一个trhee lenght列表应该只是2?