我有一个文件,我想要解压缩并利用不同文件中的列。我遇到的问题是我要解压缩的文件在列数上有不同的行(例如,第1行可以有7列,第2行可以有15列)。
如何解压缩文件而不会收到错误“解压缩的值太多”?
filehandle3 = open ('output_steps.txt', 'r')
filehandle4 = open ('head_cluster.txt', 'w')
for line in iter(filehandle3):
id, category = line.strip('\n').split('\t')
filehandle4.write(id + "\t" + category + "\n")
filehandle3.close()
filehandle4.close()
任何帮助都会很棒。谢谢!
答案 0 :(得分:1)
您应该单独提取值,如果存在,例如像这样:
for line in iter(filehandle3):
values = line.strip('\n').split('\t')
id = values[0] if len(values) > 0 else None
category = values[1] if len(values) > 1 else None
...
您还可以为此创建一个辅助函数:
def safe_get(values, index, default=None):
return values[index] if len(values) > index else default
或使用try/except
:
def safe_get(values, index, default=None):
try:
return values[index]
except IndexError:
return default
并像这样使用它:
category = safe_get(values, 1)
使用Python 3,如果行总是至少有你需要的元素,你可以使用
for line in iter(filehandle3):
id, category, *junk = line.strip('\n').split('\t')
这会将第一个元素绑定到id
,第二个元素绑定到category
,其余元素绑定到junk
。