在python中按长度拆分字符串?
我有一个包含以下文本的文件。我想用python打开文件,读取每一行,然后编辑文件,使每一行仅包含40个字符。在这行的末尾,我想要一个“+”号。保存文件。 需要帮助来编写这个脚本在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是否与全新
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
而e嗨!欢迎来到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
循环来代替两个argiter
技巧诀窍。@ShadowRanger是的,我不太确定如何在没有所有数据的情况下获得40个字符的块,非常欢迎您添加代码作为答案,因为对于任何可能偶然发现这一点的人来说,这听起来是一个很好的学习体验。@ShadowRanger我刚刚尝试了您的代码,我认为它很棒,可能是最有用的正确的方法是,只需将以open(infle)作为inf,open(outfile)作为outp:
更改为以open(infle,'r')作为inf,open(outfile,'w')作为outp:
您不需要'r'
(这是默认模式),但是,在匆忙编写注释时,我省略了outfile的'w'
模式。