使用python将连续字符串分解为组件?

Using Python to break a continuous string into components?

这与我想做的类似:将一个32位数字拆分为各个字段

这是我典型的"字符串"00000000 110000000011100000000

我需要把它分成四等份:

00000000

一千一百万

00000 110

00000000

我需要将列表附加到一个新的文本文件中,并将原始字符串作为标题。

如果有空格等分隔符,我知道如何拆分字符串,但我的字符串是连续的。

这些可以被认为是32位和8位二进制数字,但它们只是文本文件中的文本(目前)!

我对用python编程是全新的,所以,我需要病人的详细信息,而不是概括。

别以为我知道什么。

谢谢您,

拉尔夫


这应该是你想要的。更多细节见理解。

1
2
3
>>> s ="00000000110000000000011000000000"
>>> [s[i:i+8] for i in xrange(0, len(s), 8)]
['00000000', '11000000', '00000110', '00000000']


+罗伯特的回答是1。至于"我需要将列表附加到以原始字符串作为标题的新文本文件中":

1
2
3
4
s ="00000000110000000000011000000000"
s += '
'
+ '
'
.join(s[i:i+8] for i in xrange(0, len(s), 8))

将给予

1
2
3
4
5
'00000000110000000000011000000000
00000000
11000000
00000110
00000000'

因此,把每个"字节"放在一个单独的行上,正如我从你的问题中所理解的那样…

编辑:一些有助于您理解的注释:列表[](见这里)包含您的数据,在本例中,是在括号之间的字符串。列表中的第一项检索方式如下:

1
mylist[0]

在Python中,字符串本身也是一个对象,具有您可以调用的特定方法。因此,'
'
(表示回车)是"string"类型的对象,您可以使用列表作为参数调用它的方法join()

1
2
'
'
.join(mylist)

然后,列表中的元素与每个元素之间的字符串'
'
一起"连接"。结果不再是一个列表,而是一个字符串。两个字符串可以加在一起,因此

1
2
3
s += '
'
+ '
'
.join(mylist)

加上s(它已经是一个字符串),右边部分本身就是字符串的"和"。(我希望能澄清一些事情?)


以下是将字符串拆分为等长部分的几种替代方法,供参考:

1
2
3
4
5
6
>>> import re
>>> re.findall(r'.{1,8}', s, re.S)
['00000000', '11000000', '00000110', '00000000']

>>> map(''.join, zip(*[iter(s)]*8))
['00000000', '11000000', '00000110', '00000000']

这里记录了将一个序列分成n个长度组的zip方法,但它只适用于长度可被n平均整除的字符串(对于这个特定问题,这不是一个问题)。如果字符串长度不能被n整除,可以使用itertools.izip_longest(*[iter(s)]*8, fillvalue='')


使用索引操作符[]可以中断字符串、列表和touple。使用索引操作符内部的:操作符,可以在那里实现字段。尝试以下方法:

1
2
x ="00000000110000000000011000000000"
part1, part2, part3, part4 = x[:8], x[8:16], x[16:24], x[24:]


你需要一个子串

1
2
3
4
5
x = 01234567
x0 = x[0:2]
x1 = x[2:4]
x2 = x[4:6]
x3 = x[6:8]

因此,X0将保持"01",X1将保持"23"等。