在Python中分词并保留分隔符
在Python中,有没有类似于str.split
的功能,可以同时返回分隔符呢?
我需要在处理一些字符串后,保留空格的布局,以便我的输出看起来和原来一样。
举个例子:
>>> s="\tthis is an example"
>>> print s.split()
['this', 'is', 'an', 'example']
>>> print what_I_want(s)
['\t', 'this', ' ', 'is', ' ', 'an', ' ', 'example']
谢谢!
5 个回答
4
这个 re
模块提供了这样的功能:
>>> import re
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
(摘自Python文档)
对于你的例子(按空白字符分割),可以使用 re.split('(\s+)', '\tThis is an example')
。
关键是把你想要分割的正则表达式放在括号里。这样,分隔符也会被加入到结果列表中。
补充说明:正如所提到的,任何前面的或后面的分隔符当然也会被加入到列表中。为了避免这种情况,你可以先对输入字符串使用 .strip()
方法。
6
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要将它们转换成程序可以使用的格式。
比如说,如果你从一个网页上获取了一些信息,这些信息可能是以文本的形式存在的。为了让程序能够处理这些文本,我们需要把它们转化成程序能理解的结构,比如列表或者字典。这样,程序才能更方便地使用这些数据。
在这个过程中,我们可能会用到一些工具或者库,这些工具可以帮助我们更轻松地进行数据转换和处理。总之,数据的处理和转换是编程中非常重要的一部分,掌握这些技能可以让你的程序更加智能和高效。
>>> re.compile(r'(\s+)').split("\tthis is an example")
['', '\t', 'this', ' ', 'is', ' ', 'an', ' ', 'example']
19
那这样怎么样
import re
splitter = re.compile(r'(\s+|\S+)')
splitter.findall(s)