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