首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python3.x,如何读取文件内容(到一维列表中)

Python3.x,如何读取文件内容(到一维列表中)
EN

Stack Overflow用户
提问于 2017-12-22 09:44:20
回答 2查看 1.4K关注 0票数 0

我对python很陌生,只要有可能,我就会自学。我试图将包含整数的.csv文件中的数据读入一维数组(python )。

.csv文件如下所示:

代码语言:javascript
运行
复制
"1","2","3","4","5","6","7","8"
"9","10","11","12","13","14","15","16"
.
.
.

我试过这样做:

代码语言:javascript
运行
复制
l = []
f = open('file.csv', 'r')
for line in f:
      l.append(line)
f.close()

我得到一个‘列表列表’(2D数组),而不是我想要的线性列表。另外,我希望列表包含整数,而不是字符串。

EN

回答 2

Stack Overflow用户

发布于 2017-12-22 10:12:52

实际上,您得到的不是列表列表,而是字符串列表(文件中的行),每个字符串看起来都像一个列表。首先,你需要把线分开。您可以使用line.split(",")来完成这个任务,但是由于您有一个CSV文件,所以您应该直接使用csv模块。这还将为您删除"..."

代码语言:javascript
运行
复制
import csv
with open('test.csv') as f:
    r = csv.reader(f)
    lst = []
    for line in r:
          lst.append(line)

现在,我们有了一个实际的列表:[['1', '2', '3', '4', '5', '6', '7', '8'], ['9', '10', '11', '12', '13', '14', '15', '16']]

接下来,如果您想要一个包含所有行中所有数字的平面列表,则应该使用extend而不是append,还可以将这些str转换为int

代码语言:javascript
运行
复制
    for line in r:
        lst.extend(map(int, line))

这给了你[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]。您还可以在一行中使用列表理解来完成所有这些工作:

代码语言:javascript
运行
复制
    lst = [int(s) for line in r for s in line]
票数 1
EN

Stack Overflow用户

发布于 2017-12-22 10:01:11

尝尝这个

代码语言:javascript
运行
复制
with open("main.csv") as csvfile:
    tlines = [line.split(",", 2) for line in csvfile.readlines()]
    text = [" ".join(line) for line in tlines]
print text

可能对你有帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47939235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档