python - Python 读取文件返回一个 Python 表
问题描述
我正在编写一个函数,它读入一个文件并返回一个表作为嵌套列表,所有数字都转换为整数。
这是文件的样子:
a,a,1,a
4,a,a,a
a,a,a,2
a,3,a,a
这是我的代码:
def read_from_file(file_name):
f=open(file_name, 'r')
res = []
for line in f:
line = line.split(',')
res.append(line)
for i in range(len(res)):
for j in range(len(res)):
if res[i][j] == 'a\n':
res[i][j] = 'a'
if res[i][j] != 'a':
res.append(int(res[i][j]))
return res
我希望它返回如下内容:
[ [‘a’,‘a’,1,‘a’],
[4,‘a’,‘a’,‘a’],
[‘a’,‘a’,‘a’,2],
[‘a’,3,‘a’,‘a’] ]
但是当我运行我的代码时,发生了错误:
res.append(int(res[i][j]))
ValueError: invalid literal for int() with base 10: ' a'
对我做错了什么有任何评论吗?谢谢
解决方案
这是另一个建议,但它会更改处理列表中的值。
编辑:
def convert_int(file_name):
astring = open(file_name, 'r').read() # ' x,x,1,x\n4,x,x,x\nx,x,x,2\nx,3,x,x'
alist = [y.split(",") for y in astring.split("\n")] # [[' x', 'x', '1', 'x'], ['4', 'x', 'x', 'x'], ['x', 'x', 'x', '2'], ['x', '3', 'x', 'x']]
for asublist in alist:
for i, x in enumerate(asublist):
try:
asublist[i] = int(x)
except ValueError:
pass
return alist
>>>convert_int(file_name)
[[' x', 'x', 1, 'x'], [4, 'x', 'x', 'x'], ['x', 'x', 'x', 2], ['x', 3, 'x', 'x']]
推荐阅读
- java - 如何将带有 SNAKE 案例的请求参数映射到 Pojo,并大摇大摆地生成正确的 API 文档?
- shell - bhyve 虚拟机和 while 循环
- c++ - 在数组中查找最小和最大元素(C++)
- javascript - 将 JSON Restful API 数据格式化为 ReactJS Table
- mysql - Mysql 登录在我的本地 WAMP 服务器上不起作用(phpMyAdmin)
- anylogic - Anylogic 简单卡车排队模型
- java - 通过 lambda 表达式找到第一个具有最不同数字的
- office365api - 将 O365 日志发送到本地 SIEM
- uwp - 如何在不为其创建专用网站的情况下为我的应用提供隐私政策?
- python - 将列表对象转换为列表名称