Python 使用循环打开并处理带有csv的txt文件
我有数据(txt文件中混合了文本和数字),我想写一个for循环,创建列表列表,这样我就可以用更少的行处理所有文件中的数据 到目前为止,我写了以下内容:Python 使用循环打开并处理带有csv的txt文件,python,csv,for-loop,syntax,Python,Csv,For Loop,Syntax,我有数据(txt文件中混合了文本和数字),我想写一个for循环,创建列表列表,这样我就可以用更少的行处理所有文件中的数据 到目前为止,我写了以下内容: import csv path = (some path...) files = [path + 'file1.txt',path + 'file2.txt', path + 'file3.txt', ...] for i in files: with open(i, 'r') as j: Reader = csv.
import csv
path = (some path...)
files = [path + 'file1.txt',path + 'file2.txt', path +
'file3.txt', ...]
for i in files:
with open(i, 'r') as j:
Reader = csv.reader(j)
List = [List for List in Reader]
我想我会覆盖List
而不是创建一个嵌套列表,因为我得到了大小为1的Reader
和一个包含其中一个文件的维度的列表
我的问题是:
[List for List in Reader]
中,有没有办法更改它,这样我就不会覆盖列表
?类似“添加到列表”
.append()
:
是,使用.append()
:
您可以使用list方法添加到现有的列表中。由于csv.reader
实例是iterable对象,您只需将其中一个传递给方法,如下所示:
import csv
from pathlib import Path
path = Path('./')
filenames = ['in_file1.txt', 'in_file2.txt'] # etc ...
List = []
for filename in filenames:
with open(path / filename, 'r', newline='') as file:
List.append(list(csv.reader(file)))
print(List)
更新
一种更简洁的方法是使用一种叫做“”的东西:
您可以使用list方法添加到现有的列表中。由于csv.reader
实例是iterable对象,您只需将其中一个传递给方法,如下所示:
import csv
from pathlib import Path
path = Path('./')
filenames = ['in_file1.txt', 'in_file2.txt'] # etc ...
List = []
for filename in filenames:
with open(path / filename, 'r', newline='') as file:
List.append(list(csv.reader(file)))
print(List)
更新
一种更简洁的方法是使用一种叫做“”的东西:
好主意。创建的列表不是要求的列表列表,这会使文件之间很难区分。哦……如果是这样,我想您需要列表列表。请参阅更新。此外,是的,使用它通常是一种很好的做事方式——我正在努力养成使用它而不是使用它的习惯。使用Path的好主意。创建的列表不是要求的列表列表,这会使文件之间很难区分。哦……如果是这样,我想您需要列表列表。请参阅更新。而且,是的,使用它通常是一种很好的做事方式——我正在努力养成使用它而不是使用它的习惯。
import csv
from pathlib import Path
path = Path('./')
filenames = ['in_file1.txt', 'in_file2.txt'] # etc ...
List = [list(csv.reader(open(path / filename, 'r', newline='')))
for filename in filenames]
print(List)