【发布时间】:2018-07-12 18:28:32
【问题描述】:
我有一个 90% 格式为 AABBB-CCCDDD001 的文本列表。此列表中也有少数文本可能包含
AABBBICS-CCCDDD001 or
AABBBIGW-CCCDDD001 or
AABBBRTL-CCCDDD001 or
AABBBTDZ-CCCDDD001
这些是设备的名称
AA - country code
BBB - site code
CCC - Function code
DDD - Sub Function code.
例如:USNYCRTL-LANDCE001
如果代码 ICS、IGW、RTL 或 TDZ 与文本中的代码匹配,我希望它输出它们各自的数字,为此我创建了一个字典:
ENVIRONMENTCODE = {
'ICS': '1',
'IGW': '2',
'RTL': '3',
'TDZ': '4'
}
NULLCODE = {
'NULL': '9'
}
所以,如果文本是:
AABBBICS-CCCDDD001 it should print '1' or
AABBBIGW-CCCDDD001 it should print '2' or
AABBBRTL-CCCDDD001 it should print '3' or
AABBBTDZ-CCCDDD001 it should print '4'
以上示例:USNYCRTL-LANDCE001 应打印“3”,因为 RTL 对应于字典中的数字“3”
现在,对于格式为 AABBB-CCCDDD001 的 90% 的文本,应该打印“9”,因为它应该与键“NULL”配对。此外,可能很少有文本可以包含 AABBBXYZ-CCCDDD001,但我们需要忽略该 XYZ,因为它不在字典中,只考虑字典中的那些。并将该文本也标记为“9”。
我知道可以在这里使用正则表达式,但我正处于学习 python 的早期阶段,而正则表达式似乎对我来说遥不可及。这是我迄今为止尝试过的:
def environmentcode(self):
idx = self.name.find('-')
if idx > -1:
if self.name in ENVIRONMENTCODE:
return ENVIRONMENTCODE
else:
return NULLCODE
else:
return "Not Found"
它只打印 NULLCODE 字典,无论文本中是否存在键。谁能帮我解决这个问题。
【问题讨论】:
标签: python regex python-3.x