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
我猜,这会工作:
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"
,其中"-"
会导致异常被抛出。
谢谢!它解决了我的问题! –
如果你有例如像这样的字符串:
numbers = "-6, 3, -3, 18"
你总是可以这样做:
print [int(n) for n in numbers.split(',')]
得到:
[-6, 3, -3, 18]
也许你需要改变处理您的文件的方式,请添加extrat向我们展示了这些数字是如何在其中。
你为什么遍历每行中的字符?另外,附注:不要遍历'范围(len(...))',永远。你能举一个例子说明你的文件是怎样的吗? – L3viathan
你可以编辑问题以包含你的文本文件的样子吗? –
@MartinEvans我附上了一个文本文件示例 –