Python3.x,如何读取文件内容(到一维列表中)
我是python新手,只要有可能,我都会自学。我试图将包含整数的Python3.x,如何读取文件内容(到一维列表中),python,arrays,csv,Python,Arrays,Csv,我是python新手,只要有可能,我都会自学。我试图将包含整数的.csv文件中的数据读入一维数组(python列表) .csv文件如下所示: "1","2","3","4","5","6","7","8" "9","10","11","12","13","14","15","16" . . . l = [] f = open('file.csv', 'r') for line in f: l.append(line) f.close() 我试着这样做: "1","2","3","
.csv
文件中的数据读入一维数组(python列表)
.csv
文件如下所示:
"1","2","3","4","5","6","7","8"
"9","10","11","12","13","14","15","16"
.
.
.
l = []
f = open('file.csv', 'r')
for line in f:
l.append(line)
f.close()
我试着这样做:
"1","2","3","4","5","6","7","8"
"9","10","11","12","13","14","15","16"
.
.
.
l = []
f = open('file.csv', 'r')
for line in f:
l.append(line)
f.close()
我得到了一个“列表列表”(2D数组),而不是我想要的线性列表。
另外,我希望列表包含整数而不是字符串。试试这个
with open("main.csv") as csvfile:
tlines = [line.split(",", 2) for line in csvfile.readlines()]
text = [" ".join(line) for line in tlines]
print text
它可能会对您有所帮助。实际上,您得到的不是列表列表,而是字符串列表(文件中的行),每个字符串看起来都像一个列表。首先,您需要拆分行。您可以使用line.split(“,”
)执行此操作,但是由于您有一个CSV文件,因此您应该只使用该模块。这还将为您删除“…”
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
:
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]
。您也可以使用列表在一行中完成这一切:
lst = [int(s) for line in r for s in line]
请正确设置代码格式答案已经出来了。阅读列表和文件导入怎么样?!您的代码应该为您提供带有字符串/行的1D数组-列表。请正确解释您的问题。如果您需要整数,则必须将每行拆分为子字符串列表,并使用
int()
w处理此列表中的每个元素。若你们将一个数字附加到列表中,那个么你们将得到1D数组。您还可以l.extend(list)
或l+=list
来获取1D数组。这不会解决整数和字符串的问题,也不会提供解释。为什么将拆分
限制为2
?这没有任何意义。我只是从我的旧项目中裁剪了这段代码,即它被2分割。请尝试提供问题的答案,而不是其他问题的答案。感谢您详细的回复tobias_k,我尝试了您的解决方案,效果非常好。顺便说一句,csv文件中不存在“…”,这只是我显示更多类似前面的行的方式。我有很多东西要学:)@johnym的“删除”…“我的意思是删除单个条目周围的引号。此外,如果这有助于解决你的问题,请考虑接受解决问题的答案。节日快乐!