因此程序将读取带有字符串的文件。然后该字符串将保存到另一个文件中,但该字符串将被拆分为5个组。
实施例
鉴于file1.txt
的内容为thecatsatonthemat
,file2.txt
的内容将为theca tsato nthem at
。
答案 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)