Getting rid of beginning and ending characters when using re.split()
我试图理解
我不理解的是为什么在结果的末尾得到一个空字符串。
我似乎不知道如何忽略说逗号。
这是我的测试代码:
1 2 3 4 | sntc = 'this is a sentence total $5678 fees: expenses $123,345 why not -2345 hey.' test = re.split('\D*', sntc) print(test) |
我得到以下输出:
1 | ['', '5678', '123', '345', '2345', ''] |
很明显,分裂的影响太大了。我可以通过使用不同的regex方法来处理这一问题,但我无法理解为什么
比你琥珀色和觉醒。
以下是我实现的方法:
1 2 3 4 | whatup = sntce.replace(',', '') #gets rid of thousands separators testing = re.findall(r'[0-9,-.]+', whatup) #gets rid of everything but the pos and neg numbers. |
我想我不需要逗号。然后我把弦拨到数字上,然后离开。
我想你真的想要这个:
1 2 | >>> re.findall('\d+', sntc) ['5678', '123', '345', '2345'] |
你的
1 2 | >>> re.split('\D*', sntc) ['', '', '5', '6', '7', '8', '', '1', '2', '3', '', '3', '4', '5', '', '2', '3', '4', '5', '', ''] |
我认为你打算做的是:
1 2 | >>> re.split('\D+', sntc) ['', '5678', '123', '345', '2345', ''] |
然而,这正是
这里的
If there are capturing groups in the separator and it matches at the
start of the string, the result will start with an empty string. The
same holds for the end of the string:
1
2 >>> re.split(r'(\W+)', '...words, words...')`
['', '...', 'words', ', ', 'words', '...', ''`
我想你最好在这里用
因为split寻找与分隔符匹配的regex,而
所以你得到的是
类似地,如果你的分隔符是EDCOX1,6,你得到了字符串EDCOX1,7,你会得到EDCOX1的结果8,因为EDCOX1,6将中间的EDCOX1,10,10的字符串的开头和结尾分开。