我如何将能够获得一个字符串像'aaaaaaaaaaaaaaaaaaaaaaa'
并分成4个长度元组像(aaaa
,aaaa
,aaaa
)拆分一个字符串,即使大小的块
回答
>>> import textwrap
>>> s = 'aaaaaaaaaaaaaaaaaaaaaaa'
>>> textwrap.wrap(s, 4)
['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaa']
使用列表理解,发电机表达:
>>> s = 'aaaaaaaaaaaaaaaaaaaaaaa'
>>> [s[i:i+4] for i in range(0, len(s), 4)]
['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaa']
>>> tuple(s[i:i+4] for i in range(0, len(s), 4))
('aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaa')
>>> s = 'a bcdefghi j'
>>> tuple(s[i:i+4] for i in range(0, len(s), 4))
('a bc', 'defg', 'hi j')
另一种解决方案使用正则表达式:
>>> s = 'aaaaaaaaaaaaaaaaaaaaaaa'
>>> import re
>>> re.findall('[a-z]{4}', s)
['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa']
>>>
正则表达式有点矫枉过正为了这。 – poke
店主正在寻求一个解决方案,而不是要求最优化的解决方案,所以我只是放了我们也可以这样解决。没关系,我知道它不是最好的。 –
实际上,这是一个非常好的解决方案(除了正常表达式在批量使用时速度较慢)并且比zip()解决方案更容易一眼看出。它可以很容易地更改为使用任意字符,包括换行符:'re.findall('。{4}',s,re.DOTALL)' - 或者甚至接受不完整的尾部:'re.findall('。{1 ,4}',s,re.DOTALL)' – blubberdiblub
你可以使用grouper recipe,zip(*[iter(s)]*4)
:
In [113]: s = 'aaaaaaaaaaaaaaaaaaaaaaa'
In [114]: [''.join(item) for item in zip(*[iter(s)]*4)]
Out[114]: ['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa']
注意textwrap.wrap
可能不分裂s
为长度为4的字符串如果字符串包含空格:
In [43]: textwrap.wrap('I am a hat', 4)
Out[43]: ['I am', 'a', 'hat']
石斑鱼食谱比使用textwrap
快:
In [115]: import textwrap
In [116]: %timeit [''.join(item) for item in zip(*[iter(s)]*4)]
100000 loops, best of 3: 2.41 µs per loop
In [117]: %timeit textwrap.wrap(s, 4)
10000 loops, best of 3: 32.5 µs per loop
而石斑鱼配方可以与任何迭代器一起使用,而textwrap
只适用于字符串。
这是天才! –
s = 'abcdef'
我们需要在2
[s[pos:pos+2] for pos,i in enumerate(list(s)) if pos%2 == 0]
回答份分裂:
['ab', 'cd', 'ef']
- 1. 将字符串拆分成一些大小的字符数组
- 2. 数组大小和字符串拆分
- 3. 在c中将大字符串拆分为更小的块#
- 4. 拆分一个字符串
- 5. 将字符串拆分为多个较小的字符串
- 6. 将长字符串拆分为指定大小的较小字符串
- 7. 基于不区分大小写的子字符串拆分字符串
- 8. 使用拆分将字符串拆分为2个字符组?
- 9. 将字符串拆分后一个字
- 10. 拆分大文本字符串分成若干小的
- 11. 一个字符串的Python拆分值
- 12. 将很长的字符串拆分为字符重叠的较小字符块
- 13. 将一个字符串拆分为较小的字符串而不是数组
- 14. Python:在最后一个小写字母处拆分字符串
- 15. 用大写字母拆分字符串
- 16. 用大写字母拆分字符串
- 17. 以大写字母拆分字符串
- 18. 拆分这个字符串?
- 19. 不区分大小写拆分字符串
- 20. 替换一个较大的字符串的一小块
- 21. Elisp拆分字符串函数来拆分字符串。字符
- 22. C++将整个字符串拆分为另一个字符串
- 23. 拆分一个字符串并组合2个字符串 - C
- 24. 将字符串拆分为块。
- 25. 拆分一个字符串两次
- 26. 拆分一个字符串数组
- 27. python - 索引一个拆分字符串
- 28. 拆分一个web.config连接字符串
- 29. 在Java中拆分一个字符串
- 30. 拆分一个LINQ字符串列表
中代表S X:X = S [0:4]; S = S [4: ]; print(x) –
相关:[什么是最大的“pythonic”方法来遍历一个列表大块?](http://stackoverflow.com/q/434287/4279) – jfs