Python 将txt文件转换为int数组

Python 将txt文件转换为int数组,python,arrays,io,int,python-2.x,Python,Arrays,Io,Int,Python 2.x,我有一个文本文件,看起来像: -45 64 -41 -51 95 96 -74 -74 56 41 41 64 -62 75 我试图把它转换成一个int数组 到目前为止,我试着把它变成一个大字符串,然后像那样转换它,但是当我试着去掉空白时,输出仍然看起来和txt文件一模一样 file = open("dir", "r") line = file.read() line.strip() line.replace(" ","") print line line.close()

我有一个文本文件,看起来像:

-45 64 -41 -51
  95 96 -74     -74 56 41
41 64    -62 75
我试图把它转换成一个int数组

到目前为止,我试着把它变成一个大字符串,然后像那样转换它,但是当我试着去掉空白时,输出仍然看起来和txt文件一模一样

file = open("dir", "r")
line = file.read()
line.strip()
line.replace(" ","")
print line
line.close()

我做错了什么?我可以直接将它从文件读取到一个int数组中吗?

你就快到了-你需要使用
str.split
而不是
str.strip
str.replace
。然后
将结果映射为整数。您还可以使用上下文管理器自动关闭文件(顺便说一句,不是

with open('dir') as f:
    content = file.read()
array = content.split()
numbers = map(int, array)
print array

您缺少
split()
步骤

将整个文本(是的,整个文本,包括换行符)加载到一个字符串中,并在该字符串上调用
split()
方法,不带任何参数。这将在任何空白处分割,这可能是您想要的。然后
int
映射到结果上,以生成所需的
int
的生成器。如果确实需要具体化,请在生成器上使用
list()


请注意,纯python中没有“整数数组”这类东西(有一个包装C数组的模块
array
,通常用于提高内存效率),只有
list
s可以保存任何类型。由您自己决定,在制作时确保它只包含
int
s。

使用列表理解,答案是:

with open('dir', 'r') as f:
    data = f.read()

res = [int(i) for i in data.split()]
输出:

>>> res
[-45, 64, -41, -51, 95, 96, -74, -74, 56, 41, 41, 64, -62, 75]

我想这应该行得通

将numpy作为np导入


numbers=np.loadtxt('filename.txt',delimiter='\t')

您希望您的输出数组是什么样子?是否确实希望
split()
字符串?是否使用numpy?如果不是,您是指一个
列表
而不是
数组
?在python 3中,
映射
生成一个生成器,而不是一个list@taylorswift我们在这里使用的是Python 3吗?请注意
print
语句。确保人们意识到其中的差异非常重要,在较新的python中,像
map
这样的函数实际上不会在memory@taylorswift-但是Python 3与这个问题的任何部分都无关。这无关紧要。@taylorswift-这是一个单独的问题,不需要在这里讨论。谢谢你的意见。请仔细检查问题。在这种情况下,不需要对
map()
的结果调用
list()
myArray = []
fo = open("file.txt", "r")
    for line in fo:
        for nbr in line.split():
            myArray.append(int(nbr))
print myArray