Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将一个字符串分成五块?_Python_String_Chunking - Fatal编程技术网

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

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

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

例如

假设file1.txt的内容将是catsatonhemat,那么file2.txt的内容将是catsatonhemat。

类似的内容

>>> 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内存使用。