我有一个包含以下格式内容的文件:
a1 b1 c1 d1|e1|f1|path/file_name/n
a2 b2 c2 d2|e2|f2|path/file_name/n
在上面的字符串中,文件名可以有空格,因此上面的文件名可以改为:
a b c d|e|f|path/file name.txt
我需要遍历文件中的每一行来搜索包含文件名的记录。在搜索时,我需要匹配给定行中的某些内容,例如如果a> x和e ='test'等..作为搜索的一部分。
首先,我试过,在下面:
for line in data_file:
f_a f_b f_c f_d = line.split(' ')
如果文件名没有空格并且如果它有空格,那么上面的工作正常,那么错误输出为'解压缩的值太多'。(预期4) 如果我使用,
f_a f_b f_c f_d = line.rsplit(' ', 3)
然后它不会在第一个空格后存储带有名称的文件。
任何人都可以建议解决这个问题。
答案 0 :(得分:1)
如果确实在所有行中,文件名是最后一个'|'
之后的字符串,那么请先尝试拆分。
以a b c d|e|f|path/file name.txt
为例,先做
f_list, f_e, f_f, filename = line.split('|')
这可以获得filename
中的路径+文件名,无论它是否有空格。然后,您可以按照目前的方式进一步拆分f_list
:
f_a, f_b, f_c, f_d = f_list.split(' ')