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

时间:2014-11-26 18:50:27

标签: 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.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个数字之后将其拆分,以便我可以将其写回文件中(第1行= 14个数字,第2行= 14个数字等)

3 个答案:

答案 0 :(得分:1)

首先,要从字符串中删除空格,我会使用此代码

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

答案 1 :(得分:1)

如果您想使用正则表达式,您可以执行类似

的操作
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}部分匹配14个xxx字符串

\ 1 \ n部分采用在正则表达式中找到的内容,并在新行上添加

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

答案 2 :(得分:1)

我认为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()

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