从python中的文件中读取整数

时间:2015-01-27 16:53:53

标签: python

我正在使用以下内容从包含100000个数字(每行1个)的文件中读取:

var_array = []

with open("IntegerArray.txt", "r") as my_file:
    for line in my_file:
        var_array += line.strip().split('\n')

print(var_array)

这会返回一个字符串数组,但我需要将它们转换为整数。我试着用:

var_array += int(line.strip().split('\n'))

但它会抛出错误“TypeError:int()参数必须是字符串或数字,而不是'list'”。

我也尝试过使用map:

var_array.append(map(int,line.strip().split('\n')))

但是印刷显示了这个(88&gt ;,,...)

感谢您的任何建议。

4 个答案:

答案 0 :(得分:1)

问题出在split('\n')函数调用中,它将行转换为由\n字符分隔的标记列表(由于您正在执行strip(),因此该行不应存在)。删除此调用并使用int()包装line.strip()调用,一切都应该没问题。

这是更新版本:

var_array = []

with open("IntegerArray.txt", "r") as my_file:
    for line in my_file:
        var_array.append(int(line.strip()))

print(var_array)

答案 1 :(得分:1)

你不需要拆分:

var_array.append(int(line.strip()))

剥离和拆分:

>>> "hello,world".split(',')    #split the string on delimiter 
['hello', 'world']
>>> "   hello,world  \r\n".strip()  #removes whitespace from the both end
'hello,world'

答案 2 :(得分:1)

如果你安装了Pandas,那么更容易使用:

>>> import pandas as pd
>>> pd.read_csv('IntegerArray.txt', header=None)
   0
0  1
1  3
2  4
3  5

如果你想将它作为内置数据类型:

>>> list(pd.read_csv('IntegerArray.txt', header=None).values[:,0])
[1, 3, 4, 5]

答案 3 :(得分:1)

您需要拆分分隔符而不是换行符:

var_array += map(int, line.strip().split())

如果它们被空格分隔,只需拆分,如果每个数字用,分隔,请使用split(",")等。

如果它们都在单独的行上,只需使用列表comp并转换为int:

with open("IntegerArray.txt") as my_file:
        var_array = [int(line.rstrip()) for line in my_file]