首页 > 解决方案 > 使用正则表达式 python 和“re”包拆分字符串

问题描述

Python 3在 Windows 10 上使用。考虑以下字符串:

import re
s = ["12345", "67891", "01112"]

我想将这些 zip 拆分为 3 个字符以获得 zip3,但此代码会引发错误。

re.split("\d{3}", s)
TypeError: cannot use a string pattern on a bytes-like object

我不太确定如何解决。帮助表示赞赏。谢谢。

标签: regexpython-3.x

解决方案


要获得每个的前三个,只需对它们进行字符串切片:

s = ["12345", "67891", "01112"]
first_tree = [p[0:3] for p in  s] 
print(first_tree)

输出:

['123', '678', '011'] # slicing

要将所有文本分成三部分,请将其连接起来,然后使用分块来获得 3 个字母的块:

s = ["12345", "67891", "01112"]
k = ''.join(s)
threesome = [k[i:i+3] for i in range(0,len(k),3)]
print(threesome)

输出:

['123', '456', '789', '101', '112']  # join + chunking

请参阅如何将列表拆分为大小均匀的块?理解 Python 的切片符号

切片和分块也适用于字符串 - 关于字符串的官方文档在这里:关于字符串和切片


要获得其余部分:

s = ["12345", "67891", "01112"]
three_and_two = [[p[:3], p[3:]] for p in s] 
print(three_and_two) #  [['123', '45'], ['678', '91'], ['011', '12']]

推荐阅读