在Python中将数字添加到列中

时间:2011-03-07 01:19:06

标签: python

我有一堆数字用制表符分隔的新行字符看起来像这样:

104     109     105     110     126     119      97     103\n
114     129     119     130     122     106     117     128\n

等等。如何使用python将所有这些数字写入一列中的文件?即。

104\n
109\n
105\n
110\n
126\n

等等。对python来说相当新,所以感谢任何帮助,谢谢!

5 个答案:

答案 0 :(得分:2)

最简单的方法是使用sed。但是如果必须使用Python,则需要用换行符替换所有制表符。尝试这样的事情:

with open('input_file', 'rb') as infile:
    with open('output_file', 'wb') as outfile:
        for line in infile:
            outfile.write(line.replace('\t', '\n'))

答案 1 :(得分:1)

"\n".join("104 109 105 110 126 119 97 103\n 114 129 119 130 122 106 117 128\n".split())

答案 2 :(得分:0)

将input_filename和output_filename替换为适当的值。

f = open('input_filename','r')
nums = f.read().split()
f.close()
f = open('output_filename', 'w')
f.write('\n'.join(nums))
f.close()

[编辑]重写的示例,不将整个文件加载到内存中。它现在与Chinmay Kanchi的例子非常相似。但我在使用替换时使用split。

with open('input_filename','r') as input:
    with open('output_filename', 'w') as output:
        for line in input:
            output.write('\n'.join(line.split()))
            output.write('\n')

答案 3 :(得分:0)

有多种方法可以解决这个问题。您可以使用string.splitstring.join,但这似乎效率低下,因为您将字符串转换为元组并返回字符串。

使用正则表达式,我们用换行符替换一个或多个空格字符。元字符\s表示任何空白字符),在Python 2.7.1中等同于[ \t\n\r\f\v](如果设置了UNICODE,可能还有其他空白字符)。

import re 

input_file = open('input_filename','r')
output_file = open('output_filename', 'w')
for line in input_file:
    output_file.write(re.sub('[\s]+','\n', line))
input_file.close()
output_file.close()

答案 4 :(得分:0)

如果文件较小,可以使用file.readlines()将所有行读入内存:

with open('input.txt', 'r') as fin:
    for row in [l.split() for l in fin.readlines()]:
        for col in row:
            print col

如果文件非常大,请一次读取一行内存(我喜欢使用生成器):

for row in open('input.txt'):
    for col in row.split():
        print col

在任何一种情况下,您都可以将输出传递给新文件:

python myscript.py >output.txt