我想创建一个函数,逐行读取csv文件,并加载满足两个不同regex条件的行。第一个条件是加载包含任何罗马数字的行:IVXLCDM在满足该条件后,我需要筛选出包含以下模式的:.od.s
所以如果我有一个csv文件像这样:
547 I. Line 1
479 II. Todos Line 2
897 Line 3
879 XI. Line 4
它应该只加载以下行:
547 I. Line 1
879 XI. Line
到目前为止,我有这个:
def load_file(file_extension):
import re
file = open(file_extension,'r')
filter1 = re.compile("d{3}s+.([.IVXLCDM.]+)")
filter2 = re.compile(".od.s")
final_list = []
for line in file:
if re.search(filter1,line):
if not re.search(filter2,line):
final_list.append(line)
return(final_list)
file.close()
print(load_file('file.csv'))
但它不断返回一个空列表。
我不确定这是否可以在单个函数中完成。我还尝试创建了两个不同的函数:一个用regex条件过滤列表,另一个在读取csv文件时调用第一个函数。但它也没有起作用。
您的return语句在运行一次for循环后返回,因此函数在运行一个循环后结束。确保返回在for循环之外。您还应该将file.close((放在return语句之前。记住,执行return语句后什么都不做。