我正在使用以下内容从包含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 ;,,...)
感谢您的任何建议。
答案 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]