【发布时间】:2020-11-11 18:09:03
【问题描述】:
我打开 zip 中存在的所有文件,然后将字符串转换为 List,然后将列表分成每行 5 个元素。
我的代码:
with zipfile.ZipFile(dummy.zip, 'r') as mz:
for f in mz.namelist():
data = mz.read(f).decode('utf-8').replace("\n", '').replace("\r", ',').lstrip().rstrip().split(",") #Removing all spaces and \r from text.
allist = [data[i:i + 5] for i in range(len(data))[::5]] #breaking list into 5 elements each
如果所有值都存在,我可以完美地做到这一点,但是如果特定行中缺少任何元素,那么它会从第二行获取值,但我想在缺少元素的位置添加 NA。
文件数据: Dummy.zip = "File1 + File2"
文件 1:
Yuli, yu@test.com, 0001, 8902
Su, su@test.com, 0002, 8903, Manager
文件:2
Zaon, zn@test.com, 100, 9087, Analyst
June, ju@test.com, 278, 6078
代码用途:
我正在添加将此列表转换为dict,因此将每个条目的键添加为name, email, ext, Empid, Level
【问题讨论】:
-
将文件内容分成几行,然后循环遍历这些行,而不是将整个文件视为一个平面列表。
-
@barmar 感谢您的建议,我尝试这样做,但迷失在代码中。有什么建议吗?
-
with mz.open(f) as file:然后像处理普通文件一样处理它。你甚至可以使用csv模块来解析它。 -
你可以使用
readline()或for line in file:等函数
标签: python arrays python-3.x list formatting