使用Python每隔14个数字插入一个换行符

使用Python每隔14个数字插入一个换行符,python,regex,python-3.x,Python,Regex,Python 3.x,使用Python,我需要在每14个数字后面插入一个换行符str1为字符串类型 这是一个包含可变空格的文件,我将其转换为字符串,使用''.join(mystring.split())删除了多余的空格,我正在尝试将其写回文件中 str1的示例如下: str1 = "000009.26+151754.5 0.038605 15.298476 1.1986 19.921 0.042 19.811 0.036 19.386 0.017 19.165 0.023 19.323 0.069 -1.000 -9

使用Python,我需要在每14个数字后面插入一个换行符<代码>str1为字符串类型

这是一个包含可变空格的文件,我将其转换为字符串,使用
''.join(mystring.split())
删除了多余的空格,我正在尝试将其写回文件中

str1
的示例如下:

str1 = "000009.26+151754.5 0.038605 15.298476 1.1986 19.921 0.042 19.811 0.036 19.386 0.017 19.165 0.023 19.323 0.069 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -25.085 000009.38+135618.4 0.039088 13.938447 2.2400 19.218 0.026 18.893 0.022 18.445 0.018 18.331 0.024 18.110 0.033 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -27.419 000009.42-102751.9 0.039269 -10.464428 1.8442 19.249 0.036 19.029 0.027 18.980 0.021 18.791 0.018 18.751 0.047 0.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -26.459"

有没有一种pythonic方法可以在每14个数字后拆分一次,这样我就可以将它写回一个文件(第一行=14个数字,第二行=14个数字,等等)

首先,要从字符串中删除空格,我将使用以下代码

mystring = "000009.26+151754.5  2349..."

new_string = mystring.replace(" ","")
print new_string
然后,我会设置一个循环,直到你碰到绳子的末端

i = 0 
while i < len(new_string):
    segment = new_string[i:i+14]
    print segment #write segment to the new file here
    i = i + 14
i=0
而i
首先,要从字符串中删除空格,我将使用以下代码

mystring = "000009.26+151754.5  2349..."

new_string = mystring.replace(" ","")
print new_string
然后,我会设置一个循环,直到你碰到绳子的末端

i = 0 
while i < len(new_string):
    segment = new_string[i:i+14]
    print segment #write segment to the new file here
    i = i + 14
i=0
而i
首先,要从字符串中删除空格,我将使用以下代码

mystring = "000009.26+151754.5  2349..."

new_string = mystring.replace(" ","")
print new_string
然后,我会设置一个循环,直到你碰到绳子的末端

i = 0 
while i < len(new_string):
    segment = new_string[i:i+14]
    print segment #write segment to the new file here
    i = i + 14
i=0
而i
首先,要从字符串中删除空格,我将使用以下代码

mystring = "000009.26+151754.5  2349..."

new_string = mystring.replace(" ","")
print new_string
然后,我会设置一个循环,直到你碰到绳子的末端

i = 0 
while i < len(new_string):
    segment = new_string[i:i+14]
    print segment #write segment to the new file here
    i = i + 14
i=0
而i
如果要使用正则表达式,可以执行以下操作

import re
str1 = "000009.26+151754.5 0.038605 15.298476 1.1986 19.921 0.042 19.811 0.036 19.386 0.017 19.165 0.023 19.323 0.069 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -25.085 000009.38+135618.4 0.039088 13.938447 2.2400 19.218 0.026 18.893 0.022 18.445 0.018 18.331 0.024 18.110 0.033 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -27.419 000009.42-102751.9 0.039269 -10.464428 1.8442 19.249 0.036 19.029 0.027 18.980 0.021 18.791 0.018 18.751 0.047 0.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -26.459"
str2 = re.sub(r"((\S+\s){14})", r"\1\n", str1)
print str2
\S+\S部分与后跟空白字符的非空白字符字符串相匹配

xxx{14}部分匹配xxx的14个字符串

\1\n部分接受在正则表达式中找到的内容,并在其中添加换行符


括号用于保存匹配值,因此您可以使用替换部分中的\1、\2、\3等来访问它们。

如果要使用正则表达式,可以执行以下操作

import re
str1 = "000009.26+151754.5 0.038605 15.298476 1.1986 19.921 0.042 19.811 0.036 19.386 0.017 19.165 0.023 19.323 0.069 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -25.085 000009.38+135618.4 0.039088 13.938447 2.2400 19.218 0.026 18.893 0.022 18.445 0.018 18.331 0.024 18.110 0.033 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -27.419 000009.42-102751.9 0.039269 -10.464428 1.8442 19.249 0.036 19.029 0.027 18.980 0.021 18.791 0.018 18.751 0.047 0.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -26.459"
str2 = re.sub(r"((\S+\s){14})", r"\1\n", str1)
print str2
\S+\S部分与后跟空白字符的非空白字符字符串相匹配

xxx{14}部分匹配xxx的14个字符串

\1\n部分接受在正则表达式中找到的内容,并在其中添加换行符


括号用于保存匹配值,因此您可以使用替换部分中的\1、\2、\3等来访问它们。

如果要使用正则表达式,可以执行以下操作

import re
str1 = "000009.26+151754.5 0.038605 15.298476 1.1986 19.921 0.042 19.811 0.036 19.386 0.017 19.165 0.023 19.323 0.069 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -25.085 000009.38+135618.4 0.039088 13.938447 2.2400 19.218 0.026 18.893 0.022 18.445 0.018 18.331 0.024 18.110 0.033 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -27.419 000009.42-102751.9 0.039269 -10.464428 1.8442 19.249 0.036 19.029 0.027 18.980 0.021 18.791 0.018 18.751 0.047 0.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -26.459"
str2 = re.sub(r"((\S+\s){14})", r"\1\n", str1)
print str2
\S+\S部分与后跟空白字符的非空白字符字符串相匹配

xxx{14}部分匹配xxx的14个字符串

\1\n部分接受在正则表达式中找到的内容,并在其中添加换行符


括号用于保存匹配值,因此您可以使用替换部分中的\1、\2、\3等来访问它们。

如果要使用正则表达式,可以执行以下操作

import re
str1 = "000009.26+151754.5 0.038605 15.298476 1.1986 19.921 0.042 19.811 0.036 19.386 0.017 19.165 0.023 19.323 0.069 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -25.085 000009.38+135618.4 0.039088 13.938447 2.2400 19.218 0.026 18.893 0.022 18.445 0.018 18.331 0.024 18.110 0.033 -1.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -27.419 000009.42-102751.9 0.039269 -10.464428 1.8442 19.249 0.036 19.029 0.027 18.980 0.021 18.791 0.018 18.751 0.047 0.000 -9.000 0.000 0.000 0.000 0.000 0.000 0.000 -26.459"
str2 = re.sub(r"((\S+\s){14})", r"\1\n", str1)
print str2
\S+\S部分与后跟空白字符的非空白字符字符串相匹配

xxx{14}部分匹配xxx的14个字符串

\1\n部分接受在正则表达式中找到的内容,并在其中添加换行符


括号用于保存匹配值,因此您可以使用替换部分中的\1、\2、\3等来访问它们。

我认为OP希望每行有14个数字,而不是每行14个数字

str_list = str1.split()
num = len(str_list)
all_lines = [str_list[i:i+14] for i in range(0, num, 14)]
all_lines = [" ".join(line)+"\n" for line in all_lines]
fp = open("outfile.txt", 'w')
fp.writelines(all_lines)
fp.close()

当然,上面的一些内容可以结合起来减少行数,但这会使代码更难阅读。

我认为OP希望每行有14个数字,而不是每行14个数字

str_list = str1.split()
num = len(str_list)
all_lines = [str_list[i:i+14] for i in range(0, num, 14)]
all_lines = [" ".join(line)+"\n" for line in all_lines]
fp = open("outfile.txt", 'w')
fp.writelines(all_lines)
fp.close()

当然,上面的一些内容可以结合起来减少行数,但这会使代码更难阅读。

我认为OP希望每行有14个数字,而不是每行14个数字

str_list = str1.split()
num = len(str_list)
all_lines = [str_list[i:i+14] for i in range(0, num, 14)]
all_lines = [" ".join(line)+"\n" for line in all_lines]
fp = open("outfile.txt", 'w')
fp.writelines(all_lines)
fp.close()

当然,上面的一些内容可以结合起来减少行数,但这会使代码更难阅读。

我认为OP希望每行有14个数字,而不是每行14个数字

str_list = str1.split()
num = len(str_list)
all_lines = [str_list[i:i+14] for i in range(0, num, 14)]
all_lines = [" ".join(line)+"\n" for line in all_lines]
fp = open("outfile.txt", 'w')
fp.writelines(all_lines)
fp.close()

当然,上面的一些内容可以结合起来减少行数,但这会使代码更难阅读。

感谢您的编辑,Casimir et Hippolyte!谢谢你的编辑,卡西米尔和希波利特!谢谢你的编辑,卡西米尔和希波利特!谢谢你的编辑,卡西米尔和希波利特!嗨,谢谢你的及时回复,@Polka Dancer。当我提到我必须删除空格时,我真的成功了。我现在有str2,我希望它每行被分成14个数字。比如,第一行是000009.26+151754.5 0.038605-25.085. 第二行为000009.38+135618.4-27.419等等。如果我没有回答清楚这个问题,我很抱歉。谢谢嗨,谢谢你的及时回复,@Polka Dancer。当我提到我必须删除空格时,我真的成功了。我现在有str2,我希望它每行被分成14个数字。比如,第一行是000009.26+151754.5 0.038605-25.085. 第二行为000009.38+135618.4-27.419等等。如果我没有回答清楚这个问题,我很抱歉。谢谢嗨,谢谢你的及时回复,@Polka Dancer。当我提到我必须删除空格时,我真的成功了。我现在有str2,我希望它每行被分成14个数字。比如,第一行是000009.26+151754.5 0.038605-25.085. 第二行为000009.38+135618.4-27.419等等。如果我没有回答清楚这个问题,我很抱歉。谢谢嗨,谢谢你的及时回复,@Polka Dancer。当我提到我必须删除空格时,我真的成功了。我现在有str2,我希望它每行被分成14个数字。比如,第一行是000009.26+151754.5 0.038605-25.085. Th