【发布时间】:2019-12-21 00:13:24
【问题描述】:
每次遇到标点符号或数字时,我都会尝试拆分字符串,例如:
toSplit = 'I2eat!Apples22becauseilike?Them'
result = re.sub('[0123456789,.?:;~!@#$%^&*()]', ' \1',toSplit).split()
期望的输出是:
['I', '2', 'eat', '!', 'Apples', '22', 'becauseilike', '?', 'Them']
但是,上面的代码(尽管它正确地分割了它应该在的地方)删除了所有的数字和标点符号。
任何澄清将不胜感激。
【问题讨论】:
-
试试
re.findall(r'\d+|[^\w\s]|_|[^\W\d_]+', toSplit) -
那么,如果有像
11!!这样的字符串,你需要得到['11', '!!'],对吧? -
是的,没错。我还没有尝试过这种情况,谢谢指出:)
-
然后您可以使用
re.findall(r'\d+|(?:[^\w\s]|_)+|[^\W\d_]+', toSplit)将解决方案概括为数字、字母和其他不是空格、字母和数字的字符。我想知道你还想用22.45text?!做什么...
标签: python regex split numbers punctuation