Python中的拆分数组字节字符串

Python中的拆分数组字节字符串,python,regex,python-2.7,Python,Regex,Python 2.7,我正试图像这样拆分一串字节: '\xf0\x9f\x98\x84 \xf0\x9f\x98\x83 \xf0\x9f\x98\x80 \xf0\x9f\x98\x8a \xe2\x98\xba \xf0\x9f\x98\x89 \xf0\x9f\x98\x8d \xf0\x9f\x98\x98 \xf0\x9f\x98\x9a \xf0\x9f\x98\x97 \xf0\x9f\x98\x99 \xf0\x9f\x98\x9c \xf0\x9f\x98\x9d \xf0\x9f\x98\x9b

我正试图像这样拆分一串字节:

'\xf0\x9f\x98\x84 \xf0\x9f\x98\x83 \xf0\x9f\x98\x80 \xf0\x9f\x98\x8a \xe2\x98\xba \xf0\x9f\x98\x89 \xf0\x9f\x98\x8d \xf0\x9f\x98\x98 \xf0\x9f\x98\x9a \xf0\x9f\x98\x97 \xf0\x9f\x98\x99 \xf0\x9f\x98\x9c \xf0\x9f\x98\x9d \xf0\x9f\x98\x9b \xf0\x9f\x98\x81 \xf0\x9f\x98\x82 \xf0\x9f\x98\x85 \xf0\x9f\x98\x86 \xf0\x9f\x98\x8b \xf0\x9f\x98\x8e \xf0\x9f\x98\xac \xf0\x9f\x98\x87'
'\xf0\x9f\x98\x84', '\xf0\x9f\x98\x83', etc.
'xf0', 'x9f' 'x98' etc.
变成这样:

'\xf0\x9f\x98\x84 \xf0\x9f\x98\x83 \xf0\x9f\x98\x80 \xf0\x9f\x98\x8a \xe2\x98\xba \xf0\x9f\x98\x89 \xf0\x9f\x98\x8d \xf0\x9f\x98\x98 \xf0\x9f\x98\x9a \xf0\x9f\x98\x97 \xf0\x9f\x98\x99 \xf0\x9f\x98\x9c \xf0\x9f\x98\x9d \xf0\x9f\x98\x9b \xf0\x9f\x98\x81 \xf0\x9f\x98\x82 \xf0\x9f\x98\x85 \xf0\x9f\x98\x86 \xf0\x9f\x98\x8b \xf0\x9f\x98\x8e \xf0\x9f\x98\xac \xf0\x9f\x98\x87'
'\xf0\x9f\x98\x84', '\xf0\x9f\x98\x83', etc.
'xf0', 'x9f' 'x98' etc.
但是,
split()

'\xf0\x9f\x98\x84 \xf0\x9f\x98\x83 \xf0\x9f\x98\x80 \xf0\x9f\x98\x8a \xe2\x98\xba \xf0\x9f\x98\x89 \xf0\x9f\x98\x8d \xf0\x9f\x98\x98 \xf0\x9f\x98\x9a \xf0\x9f\x98\x97 \xf0\x9f\x98\x99 \xf0\x9f\x98\x9c \xf0\x9f\x98\x9d \xf0\x9f\x98\x9b \xf0\x9f\x98\x81 \xf0\x9f\x98\x82 \xf0\x9f\x98\x85 \xf0\x9f\x98\x86 \xf0\x9f\x98\x8b \xf0\x9f\x98\x8e \xf0\x9f\x98\xac \xf0\x9f\x98\x87'
'\xf0\x9f\x98\x84', '\xf0\x9f\x98\x83', etc.
'xf0', 'x9f' 'x98' etc.
我尝试了
拆分(“”
,但似乎不起作用。如何实现上述功能?

str.split(“”)
或者干脆
str.split()
(在任意宽度的空白上拆分)对您的输入效果很好:

sample = '\xf0\x9f\x98\x84 \xf0\x9f\x98\x83 \xf0\x9f\x98\x80 \xf0\x9f\x98\x8a \xe2\x98\xba \xf0\x9f\x98\x89 \xf0\x9f\x98\x8d \xf0\x9f\x98\x98 \xf0\x9f\x98\x9a \xf0\x9f\x98\x97 \xf0\x9f\x98\x99 \xf0\x9f\x98\x9c \xf0\x9f\x98\x9d \xf0\x9f\x98\x9b \xf0\x9f\x98\x81 \xf0\x9f\x98\x82 \xf0\x9f\x98\x85 \xf0\x9f\x98\x86 \xf0\x9f\x98\x8b \xf0\x9f\x98\x8e \xf0\x9f\x98\xac \xf0\x9f\x98\x87'
parts = sample.split()
演示:

但是,如果这是二进制数据,则需要注意在这些4字节值中没有
\x20
字节。最好从中生成5个字节的块,然后删除最后一个字节:

for i in range(0, len(sample), 5):
    chunk = sample[i:i + 4]  # ignore the 5th byte, a space
演示:

>适用于范围内的i(0,len(示例),5):
...     chunk=sample[i:i+4]#忽略第5个字节,一个空格
...     打印块。解码('utf8')
...     如果i==20:break
... 

您使用的是什么“拆分”方法?看起来它不理解转义序列,并且认为反斜杠只是转义下一个字符。您使用了什么代码获得了单个字符?您无法从拆分该输入中获得
'xf0'
;这是一个包含3个字符的字符串,一个
x
,后跟一个2位十六进制数。听起来好像您将字符串作为序列处理,而不是拆分它们,结果是每个字符串只有一个字符(如
'\xf0'
,请注意反斜杠)。。。。是在“\`”上拆分吗?使用split(“”)而不是split(“”)以空格拆分。@Boop:这两个方法调用之间没有区别。两者在空格上分开。