如何将字符串分成五个块?

时间:2016-01-30 19:53:48

标签: python string chunking

因此程序将读取带有字符串的文件。然后该字符串将保存到另一个文件中,但该字符串将被拆分为5个组。

实施例

鉴于file1.txt的内容为thecatsatonthematfile2.txt的内容将为theca tsato nthem at

5 个答案:

答案 0 :(得分:6)

这是一个枚举器,它将为您提供5个字符块:

def chunk(l):
    for i in range(0, len(l), 5):
        yield l[i:i+5]

使用它像:

>>> l = 'abcdefghijqlmnopqrstuvwxyz'
>>> for sub in chunk(l):
>>>     print(sub)

abcde
fghij
klmno
pqrst
uvwxy
z

答案 1 :(得分:2)

这样的东西?

>>> a = "123456789012345678901234567890"
>>> while len(a)>0:
...     print a[0:5]
...     a=a[5:]
...
12345
67890
12345
67890
12345
67890

答案 2 :(得分:0)

文件data.txt的内容thecatsatonthemat

with open('data.txt', 'r') as f:
    data = f.read()
new_string = ''
for i,val in enumerate(data):
    if i%5 == 0 and i != 0:
        new_string += ' ' + val
    else:
        new_string += val
with open('new_data.txt', 'w') as f:
    f.write(new_string)

new_data.txt的内容

theca tsato nthem at

答案 3 :(得分:0)

你可以这样做。 file1.txt将是检索字符串的文件。 file2.txt将是将写入拆分字符串的文件。

注意:此代码假定文本文件(file1.txt)没有空格或换行符。

line = ''
with open('file1.txt', 'r') as fr:
    line = fr.read()
fr.close()

modified_str = ''
for i in range(0, len(line), 5):
    modified_str += line[i:i + n] + ' '
modified_str = modified_str[:len(modified_str) - 1] # Remove the trailing white space

with open('file2.txt', 'w') as fw:
    fw.write(modified_str)
fw.close()

我们假设file1.txt的内容是thecatsatonthemat。运行该代码后,file2.txt现在将包含theca tsato nthem at

答案 4 :(得分:0)

如果您在内存中有字符串并且需要输出内存,请使用Steven Burnap的答案。

如果你需要读写文件,这里有一个快速的解决方案,使用很少的(O(1))内存,并在Python 2和3中工作:

with open('file1.txt') as f:
  with open('file2.txt', 'w') as nf:
    item = f.read(5)
    nf.write(item)
    while len(item) == 5:
      item = f.read(5)
      if not item:
        break
      nf.write(' ')
      nf.write(item)