Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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_Python 3.x - Fatal编程技术网

在python中按长度拆分字符串?

在python中按长度拆分字符串?,python,python-3.x,Python,Python 3.x,我有一个包含以下文本的文件。我想用python打开文件,读取每一行,然后编辑文件,使每一行仅包含40个字符。在这行的末尾,我想要一个“+”号。保存文件。 需要帮助来编写这个脚本 file=“从今天(9月17日)开始,一系列iPhone和iPad将进行更改,由iOS 12提供。苹果已开始推出下一版本的移动操作系统iOS 12。iOS 12免费升级,将使您的iPhone和iPad更快、更安全,并添加一系列新功能,包括孟菲斯、Siri快捷方式和分组通知。Wonder您的iPhone和iPad是否与全新

我有一个包含以下文本的文件。我想用python打开文件,读取每一行,然后编辑文件,使每一行仅包含40个字符。在这行的末尾,我想要一个“+”号。保存文件。 需要帮助来编写这个脚本


file=“从今天(9月17日)开始,一系列iPhone和iPad将进行更改,由iOS 12提供。苹果已开始推出下一版本的移动操作系统iOS 12。iOS 12免费升级,将使您的iPhone和iPad更快、更安全,并添加一系列新功能,包括孟菲斯、Siri快捷方式和分组通知。Wonder您的iPhone和iPad是否与全新的iOS 12兼容?以下是与新的苹果操作系统兼容的设备的完整列表。“

文件[:40]
将为您提供前40个字符

另请查看更多信息这是一种方式:

如果你真的想拆分单词或其他任何它也有这些功能的东西,它可以将文本“包装”成最多40个字符的行

from textwrap import wrap

# File containing your text.
with open("./Text Document.txt", 'r') as read_file:
  data = read_file.read()

data_list = wrap(data, 40)

# New file created with 40 + "+" per line.
with open("./New Text Document.txt", 'w') as write_file:
  for data in data_list:
    write_file.write(data + "+\n")
这将强制执行40个字符的严格限制:

# File containing your text.
with open("./Text Document.txt", 'r') as read_file:
  data = read_file.read()

data_list = []
b, e = 0, 40
while e < len(data):
  data_list.append(data[b:e])
  b += 40
  e += 40
  if e > len(data):
    data_list.append(data[b:len(data)])


# New file created with 40 + "+" per line.
with open("./New Text Document.txt", 'w') as write_file:
  for data in data_list:
    write_file.write(data + "+\n")
包含文本的文件。 打开(“./Text Document.txt”,“r”)作为读取文件: data=read_file.read() 数据列表=[] b、 e=0,40 而elen(数据): 数据列表追加(数据[b:len(数据)]) #以每行40+“+”创建的新文件。 打开(“./New Text Document.txt”,“w”)作为写入文件: 对于数据列表中的数据: 写入文件。写入(数据+“+\n”)
嗨!欢迎来到StackOverflow!我不确定你的问题是什么。你能更新你的问题吗?到目前为止你做了什么?这将有助于知道你认为这是一条线。从Python的角度来看,您提供的只是一条“线”,但如果您想要分割逻辑英语句子,那么它是许多句子。您应该发布您尝试过的内容,包括要复制的最小代码、输入、预期输出和不正确的输出。仅提供“这是一个类似于我的文件的变量定义”,而不尝试解决或预期的输出,就目前而言,这是一个不合适的问题(因此不打算作为代码编写服务)。
string
模块在这里基本不相关(考虑到str.format和f-strings是多么的简单,
str.format
和f-strings在这一点上,它在很大程度上是一些随机常量和很少使用的
Formatter
类的垃圾场。)我还打算更新到现代文档的链接(3.1不受支持),但我不确定这个链接一开始能起到什么作用。注意:如果你强制执行严格的40个字符限制(不注意空格或试图避免拆分单词),它会更安全(而且可能更快)从输入流到输出,而不是在内存中把整件事情弄碎,然后立即写入整件事情。
将open(infle)作为inf,open(outfile)作为outp:
用于iter中的chunk(functools.partial(inf.read,40),“”):outp.write(chunk++\n)
。如果您不想使用
functools
或过于“聪明”,可以用更传统的
while
循环来代替两个arg
iter
技巧诀窍。@ShadowRanger是的,我不太确定如何在没有所有数据的情况下获得40个字符的块,非常欢迎您添加代码作为答案,因为对于任何可能偶然发现这一点的人来说,这听起来是一个很好的学习体验。@ShadowRanger我刚刚尝试了您的代码,我认为它很棒,可能是最有用的正确的方法是,只需将
以open(infle)作为inf,open(outfile)作为outp:
更改为
以open(infle,'r')作为inf,open(outfile,'w')作为outp:
您不需要
'r'
(这是默认模式),但是,在匆忙编写注释时,我省略了outfile的
'w'
模式。