【发布时间】:2021-05-11 07:02:59
【问题描述】:
我正在尝试根据行的长度来选择行。我的 csv 文件中的某些行有 5 个项目,有些有 20 个项目,有些有 40 个。如果它们的长度在 24 到 34 之间,我想收集所有行。所以我尝试了以下代码:
my_path = r'c:\data\FF\Desktop\my_files'
for file in os.listdir(my_path):
path_file = os.path.join(my_path, file)
with open(path_file, 'r') as output:
reader = csv.reader(output, delimiter = ',')
read = [row for row in reader if row]
for row in read:
if len(row) > 24 or len(row) < 34:
if row[9] == '3080':
print(row[0] + ',' + row[24] + ',' + row[25] + ','
+ row[26] + ',' + row[27] + ',' + row[28] + ',' + row[29]
+ ',' + row[30] + ',' + row[31] + ',' + row[32] + ',' + row[33] + ','
+ row[34])
我收到以下错误:
File "C:\data\FF\Desktop\Python\PythongMySQL\untitled2.py", line 15, in <module>
if row[9] == '3080':
IndexError: list index out of range
我希望得到几行长度在 24 到 34 之间的行。
【问题讨论】:
-
检查长度时使用
and而不是or。所有行都符合or -
@MarkTolonen 我将
or更改为and收到以下错误:` + row[34]) IndexError: list index out of range` -
这需要 35 行。
-
@MarkTolonen 还是同样的错误...
-
或将其设为 pythonic
if 24 < len(row) < 34 :,然后一旦确定该行的长度
标签: python list csv for-loop if-statement