我有一个元组列表,它是一个参考表:
classes = [('400002', 'Class1'), ('400009', 'Class2'), ('400209', 'Class3')]
我还有记录的元组列表:
records = [('Record 1','400002','Memo1'),('Record 2','400003','Memo2'),
('Record 3','400009','Memo3'),('Record 4','L-REF-96-1','Memo4'),('Record
5','400002','Memo5')]
为了导入,我必须分配一个类并对其进行编码:
encoding = 'utf-8'
ref = []
nom = []
memo = []
classr = []
for i in records:
ref.append(i[0].encode(encoding))
nom.append(i[1].encode(encoding))
memo.append(i[2].encode(encoding))
现在我需要根据索引2(如果存在)来分配一个类,否则,如果str以L-REF开头,则为其提供一个通用类,否则为其提供另一个通用类
我正在做这样的事情,但是没有成功,它始终默认为if语句的“ Else”部分:
for c in classes:
if i[1] == c[0]:
newclass = c[1]
elif i[1][5:] == "L-REF":
newclass = 'general class1'
else:
newclass = 'general class2'
classr.append(newclass.encode(encoding))
newimportlist = list(zip(ref,nom,memo,classr))
预期输出:
[(b'Record 1',b'400002',b'Memo1',b'Class1'),(b'Record
2',b'400003',b'Memo2',b'general class2'), (b'Record
3',b'400009',b'Memo3',b'Class2'),(b'Record 4',b'L-REF-96-
1',b'Memo4',b'general class 1'),(b'Record
5',b'400002',b'Memo5',b'Class1')]
答案 0 :(得分:1)
首先,可以通过转置列表tabulizer::extract_tables(FilePath, pages = 1, guess = FALSE
, area = list(c(265, 33, 460,400))
, columns = list(c(300))))
来更轻松地构造ref
,nom
和memo
。
records
现在从>>> ref, nom, memo = map(list, zip(*records))
>>> ref
>>> ['Record 1', 'Record 1', 'Record 3', 'Record 4', 'Record 5']
>>> nom
>>> ['400002', '400003', '400009', 'L-REF-96-1', '400002']
>>> memo
>>> ['Memo1', 'Memo1', 'Memo3', 'Memo4', 'Memo5']
构建字典。
classes
>>> classes = [('400002', 'Class1'), ('400009', 'Class2'), ('400209', 'Class3')]
>>> classes_dict = dict(classes)
>>> classes_dict
>>> {'400002': 'Class1', '400009': 'Class2', '400209': 'Class3'}
(我假设这是您的预期输出的名称)现在可以按以下方式构建:
classr