Python 使用正则表达式拆分字符串

标签 python regex string split

我想用 ':' 和 ' ' 字符拆分字符串。但是,我想忽略两个空格“”和两个冒号“::”。例如

text = "s:11011 i:11010 ::110011  :110010 d:11000"

应该分成

[s,11011,i,11010,:,110011, ,110010,d,11000]

在遵循 python 网站上的 Regular Expressions HOWTO 之后,我设法想出了以下内容

regx= re.compile('([\s:]|[^\s\s]|[^::])')
regx.split(text)

然而,这并没有像预期的那样工作,因为它在 : 和空格上进行了拆分,但它仍然在拆分中包含了 ':' 和 ' '。

[s,:,11011, ,i,:,11010, ,:,:,110011, , :,110010, ,d,:,11000]

我该如何解决这个问题?

编辑:在双空格的情况下,我只希望出现一个空格

最佳答案

请注意,这假设您的数据具有类似 X:101010 的格式:

>>> re.findall(r'(.+?):(.+?)\b ?',text)
[('s', '11011'), ('i', '11010'), (':', '110011'), (' ', '110010'), ('d', '11000')]

然后链接它们:

>>> list(itertools.chain(*_))
['s', '11011', 'i', '11010', ':', '110011', ' ', '110010', 'd', '11000']

关于Python 使用正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16330838/

相关文章:

python - 服务器可以发布广播消息来终止工作人员吗?兔子MQ

c++ - 为什么以下正则表达式代码在 VC++ 2013 Debug模式下崩溃

regex - 如果使用 linux 命令行工具在文本文件的下一行中满足条件,则替换换行符

python - “str”对象不可作为数组调用字符串

python - 在 Python 中将列表打印成固定宽度的字符串

python - 如何在tornado web中通过AJAX上传启用csrf的多部分/表单数据

python - 将来自相机的帧写入 OpenCV 中的单个图像

python - 在不同的 .text 文件中查找通用 ID 并附加额外的对应行

regex - 如何找到特殊字符 { 和\之间的模式?

c++ - const string a = "tmp"vs const string& a = "tmp"