我有一个这样的文本文件,字符串表示文件路径,整数表示类类型,它们之间用空格分隔
FEA/1048_IEO_FEA_MD.mp4 3
FEA/1029_IWW_FEA_XX.mp4 3
FEA/1002_WSI_FEA_XX.mp4 3
FEA/1001_IWW_FEA_XX.mp4 3
在我的代码中,我想为不同的变量分配路径和标签,并将它们附加到列表中
def get_clip_list(self, cliplist_file):
datalist = list(open(cliplist_file, 'r'))
clips_with_label = []
for data in datalist:
path, label = data.strip('\n').split(' ')[0], int(data.strip('\n').split(' ')[1])
clips_with_label.append({'path': path, 'label': label})
return clips_with_label
我的错误是“ValueError:以10为基数的int()的文本无效:“”。我不确定这意味着什么,我所有的标签都是整数。谢谢你的帮助。谢谢
数据行之间有空行,分隔为两个空格而不是一个空格。将文件转换为
list
时,空行将转换为'\n'
。它们不能转换为int
。当split
时的两个空格将包含空字符串。只要去掉空行,把空格换成一个就行了。或者,如果这不是一个选项,您可以添加一个空行机制并将
split
更改为任何空格。例如,将代码更改为:if
语句检测空行,并且不带任何参数的split
用任何空格分割附言:我删除了你的
strip('\n')
,因为int
可以将带有'\n'
的字符串很好地转换为整数int('')
将引发ValueError
。使用:你的主要问题是你在实际空间上分裂From the docs:
此外:
*强调我的
因此,您只需要使用
split()
而不是split(' ')
关于代码的其他一些注意事项:
根本不需要
strip
行,因为int()
构造函数知道如何处理新行字符。例如:int(" 5 \n") == 5
您两次调用
split
,这是浪费。叫它一次,然后unpack the result您还需要跳过空行以避免进一步的错误。为此,您可以使用
strip
代码的修订版本:
相关问题 更多 >
编程相关推荐