Python:读取带负数的文件

问题描述:

我正在尝试读取.txt文件并将其附加到列表中的列表中,但我遇到了此问题。Python:读取带负数的文件

ValueError异常:无效字面对于int()与底座10: ' - '

在其中我的代码是这样的:

def readfiles(filename): 
    with open(filename) as f: 
     content = f.readlines() 
    matrix=[] 
    tem=[] 
    for i in range(len(content)): 
     tem=[] 
     content[i] = content[i].replace('\n','') 
     content[i] = content[i].replace(',', '') 
     for j in range(len(content[i])): 
      tem.append(int(content[i][j])) 
     matrix.append(tem) 

    return matrix 

,但如果我更换tem.append( INT(内容[i] [j]))tem.append(内容[i] [j])

列表显示为不同这在某种程度上是这样的:

[['3',' - ','2','1'],['4',' - ','1','0'],['0','2', '1']]

我想让我的函数从文件中读取负值。有人能帮忙吗 ?

我的.txt文件是这样的:

3,-2,1 
4,-1,0 
0,2,1 
+0

你为什么遍历每行中的字符?另外,附注:不要遍历'范围(len(...))',永远。你能举一个例子说明你的文件是怎样的吗? – L3viathan

+1

你可以编辑问题以包含你的文本文件的样子吗? –

+0

@MartinEvans我附上了一个文本文件示例 –

我猜,这会工作:

def readfiles(filename): 
    with open(filename) as f: 
     return [[int(num) for num in line.split(",")] for line in f] 

您遇到的问题是,你遍历你的线(这是一个字符串),让你的单个字符,而不是“之间的东西“:

假设当前行(content[i])为"3,-2,1"。 在此之后:

content[i] = content[i].replace(',', '') 

content[i]现在"3-21"。它应该如何知道你的号码是什么?遍历该字符串会给你"3", "-", "2", "1",其中"-"会导致异常被抛出。

+0

谢谢!它解决了我的问题! –

如果你有例如像这样的字符串:

numbers = "-6, 3, -3, 18"

你总是可以这样做:

print [int(n) for n in numbers.split(',')]

得到:

[-6, 3, -3, 18]

也许你需要改变处理您的文件的方式,请添加extrat向我们展示了这些数字是如何在其中。