Python 如何将一个字符串分成五块?
因此程序将读取带有字符串的文件。然后,该字符串将保存到另一个文件中,但该字符串将分成5组 例如 假设file1.txt的内容将是catsatonhemat,那么file2.txt的内容将是catsatonhemat。类似的内容Python 如何将一个字符串分成五块?,python,string,chunking,Python,String,Chunking,因此程序将读取带有字符串的文件。然后,该字符串将保存到另一个文件中,但该字符串将分成5组 例如 假设file1.txt的内容将是catsatonhemat,那么file2.txt的内容将是catsatonhemat。类似的内容 >>> a = "123456789012345678901234567890" >>> while len(a)>0: ... print a[0:5] ... a=a[5:] ... 12345 67890 1
>>> a = "123456789012345678901234567890"
>>> while len(a)>0:
... print a[0:5]
... a=a[5:]
...
12345
67890
12345
67890
12345
67890
像这样的
>>> a = "123456789012345678901234567890"
>>> while len(a)>0:
... print a[0:5]
... a=a[5:]
...
12345
67890
12345
67890
12345
67890
文件data.txt thecatsatonhemat的内容
new_data.txt的内容
theca tsato nthem at
文件data.txt thecatsatonhemat的内容
new_data.txt的内容
theca tsato nthem at
下面是一个枚举器,它将为您提供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
下面是一个枚举器,它将为您提供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
你可以这样做。file1.txt将是检索字符串的文件。file2.txt将是写入拆分字符串的文件 注意:此代码假定文本文件file1.txt没有空格或换行符
让我们假设file1.txt的内容是catsatonhemat。运行该代码,file2.txt现在将包含theca tsato nthem。您可以这样做。file1.txt将是检索字符串的文件。file2.txt将是写入拆分字符串的文件 注意:此代码假定文本文件file1.txt没有空格或换行符
让我们假设file1.txt的内容是catsatonhemat。运行该代码后,file2.txt现在将包含theca tsato nthem at.如果您在内存中有字符串,并且需要在内存中输出,请使用Steven Burnap的答案 如果您需要读写文件,这里有一个快速的解决方案,它使用很少的O1内存,并且在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)
如果您在内存中有字符串,并且需要在内存中输出,请使用Steven Burnap的答案 如果您需要读写文件,这里有一个快速的解决方案,它使用很少的O1内存,并且在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)
你自己写一些代码怎么样?如果您遇到特定的问题,我们很乐意提供帮助。这就是特定的问题。您自己编写一些代码怎么样?如果您遇到特定的问题,我们很乐意提供帮助。这是特定的问题Grats,您的答案如下所示:在Python 2中,将range替换为xrange,以避免在输入很长时创建长的临时列表。这不会直接回答问题,例如,OP指定应从文件读取输入。Grats,下面列出了您的答案:在Python 2中,如果输入很长,请将range替换为xrange以避免创建长临时列表。这不会直接回答问题,例如,OP指定应从文件读取输入。对于长字符串,这是非常慢的Olena**2,因为`a[5:]'复制几乎整个字符串。对于长字符串,这是非常慢的Olena**2,因为'a[5:'复制几乎整个字符串。这不起作用,它会引发NameError:name'n'未定义。这不起作用,它会引发NameError:name'n'未定义。这是不正确的,它在new_data.txt的开头添加了一个额外的空格。@pts:更正了该解决方案。使用lstrip将删除字符串开头的空格。这仍然不正确,因为当输入以空格开头时,lstrip会删除额外的空格。@pts:更新了解决方案解决方案现在是正确的。它将整个输入文件读取到内存中,因此如果文件大小为n,它将在内存中使用。请参阅O1内存使用量较少的我的解决方案。这是不正确的,它在new_data.txt的开头添加了一个额外的空间。@pts:更正了该解决方案。使用lstrip将删除字符串开头的空格。这仍然不正确,因为当输入以空格开头时,lstrip会删除额外的空格。@pts:更新了解决方案解决方案现在是正确的。它将整个输入文件读取到内存中,因此如果文件大小为n,它将在内存中使用。查看我的解决方案,减少O1内存使用。