Python 仅在未找到时追加值

Python 仅在未找到时追加值,python,Python,如果分类法中的分类法不在翻译中。我希望它打印152W00000X | Not Found当前所有行都打印为Not Found。如果删除else,则会出现超出范围的错误 taxonomies = ['152W00000X', '156FX1800X', '200000000X', '261QD0000X', '3336C0003X', '333600000X', '261QD0000X'] translations = {'261QD0000X': 'Clinic/Center Dental'

如果分类法中的分类法不在翻译中。我希望它打印
152W00000X | Not Found
当前所有行都打印为Not Found。如果删除
else
,则会出现超出范围的错误

taxonomies = ['152W00000X', '156FX1800X', '200000000X', '261QD0000X', '3336C0003X', '333600000X', '261QD0000X']
translations = {'261QD0000X': 'Clinic/Center   Dental', '3336C0003X': 'Pharmacy        Community/Retail Pharmacy',  '333600000X': 'Pharmacy'}
a = 0
final = []

for nums in taxonomies:
    for i, v in translations.items():
            if nums == i:
                    data = v
                    final.append(data)
            else:
                    final.append('Not Found')

for nums in taxonomies:
    print nums, "|", final[a]
    a = a + 1
电流输出为:

152W00000X | Not Found
156FX1800X | Not Found
200000000X | Not Found
261QD0000X | Not Found
3336C0003X | Not Found
333600000X | Not Found
261QD0000X | Not Found
152W00000X | Not Found
156FX1800X | Not Found
200000000X | Not Found
261QD0000X | Clinic/Center   Dental
3336C0003X | Pharmacy        Community/Retail Pharmacy
333600000X | Pharmacy
261QD0000X | Clinic/Center   Dental
理想的输出是:

152W00000X | Not Found
156FX1800X | Not Found
200000000X | Not Found
261QD0000X | Not Found
3336C0003X | Not Found
333600000X | Not Found
261QD0000X | Not Found
152W00000X | Not Found
156FX1800X | Not Found
200000000X | Not Found
261QD0000X | Clinic/Center   Dental
3336C0003X | Pharmacy        Community/Retail Pharmacy
333600000X | Pharmacy
261QD0000X | Clinic/Center   Dental


我正在使用
re
在两个或多个空格处拆分
IDVtaxo.txt
。除非源实际上由制表符分隔,否则这将起作用

import re

with open('IDVtaxo.txt') as f:
    idvtaxo = {re.split(r'\s{2,}', x)[0]: re.split(r'\s{2,}', x)[2] for x in f.read().splitlines()}

with open('taxonomies.txt') as f:
    taxonomies = f.read().splitlines()

for taxonomy in taxonomies:
    data = taxonomy.split('|')
    tranlated = idvtaxo.get(data[1], 'Not Found')
    print '%s|%s' % (taxonomy, tranlated)

我正在使用
re
在两个或多个空格处拆分
IDVtaxo.txt
。除非源实际上由制表符分隔,否则这将起作用

import re

with open('IDVtaxo.txt') as f:
    idvtaxo = {re.split(r'\s{2,}', x)[0]: re.split(r'\s{2,}', x)[2] for x in f.read().splitlines()}

with open('taxonomies.txt') as f:
    taxonomies = f.read().splitlines()

for taxonomy in taxonomies:
    data = taxonomy.split('|')
    tranlated = idvtaxo.get(data[1], 'Not Found')
    print '%s|%s' % (taxonomy, tranlated)

IDVtaxo
中有很多行不包含
nums
?顶部有四行!对于没有
nums的
,它会附加
'notfound'
No。当分类法只包含IDVtaxo中存在的nums时,脚本工作得非常好。这些问题来自分类法中的NUM而不是IDVtaxo中的NUM。请尝试解决仍然不起作用的问题。忘掉分类法吧。使用示例输入和输出编写新代码。你甚至不需要使用文件,只要有一个表示
IDVtaxo
的多行字符串。
IDVtaxo
中有很多行不包含
nums
?顶部有四行!对于没有
nums的
,它会附加
'notfound'
No。当分类法只包含IDVtaxo中存在的nums时,脚本工作得非常好。这些问题来自分类法中的NUM而不是IDVtaxo中的NUM。请尝试解决仍然不起作用的问题。忘掉分类法吧。使用示例输入和输出编写新代码。您甚至不需要使用文件,只要有一个表示
IDVtaxo
.factaxo={re.split(r'\s{2,}',x)[0]:re.split(r'\s{2,}',x)[2]代表f.read().splitlines()中的x就可以了^SyntaxError:无效syntaxOk显然您正在运行python3…修复了nowfactaxo={re.split(r'\s{2,}',x)[0]:re.split(r'\s{2,}',x)[2]for x in f.read().splitlines()}^SyntaxError:无效syntaxOk显然您正在运行python3…现已修复