如何改进此功能?
将所有搜索行放在文件中都应该是好的。重要的是它们按此顺序排列。我可以在使用时使用吗?
def findlarm(text):
"""
Lookijng for a lable to put on map
:param text:
:return:
"""
if text.lower().find('brand i byggnad industri') >= 0:
label = 'Brand i byggnad industri'
elif text.lower().encode('utf8').find('trafikolycka påkörd person') >= 0:
label = 'Trafikolycka påkörd person'
elif text.lower().find('trafikolycka') >= 0:
label = 'Trafikolycka'
elif text.lower().find('brand i byggnad') >= 0:
label = 'Brand i byggnad'
elif text.lower().encode('utf8').find('röklukt') >= 0:
label = 'Röklukt'
elif text.lower().encode('utf8').find('Brand ute - terräng Gräsbrand') >= 0:
label = 'Gräsbrand'
elif text.lower().encode('utf8').find('Utsläpp farligt ämne') >= 0:
label = 'Utsläpp farligt ämne'
elif text.lower().encode('utf8').find('brand ute - övrigt') >= 0:
label = 'Brand ute - övrigt'
elif text.lower().encode('utf8').find('sjukvårdslarm') >= 0:
label = 'Sjukvårdslarm'
elif text.lower().encode('utf8').find('passning') >= 0:
label = 'Passning station'
elif text.lower().find('annat') >= 0:
label = 'Annat larm'
elif text.lower().find('skogsbrand') >= 0:
label = 'Skogsbrand'
elif text.lower().find('drunkning') >= 0:
label = 'Drunkning'
elif text.lower().find('fartyg') >= 0:
label = 'Fartyg/Båtolycka'
elif text.lower().find('ivpa') >= 0:
label = 'IVPA'
elif text.lower().find('automatiskt brandlarm') >= 0:
label = 'Aut Brandlarm'
elif text.lower().find('sjukdomsfall') >= 0:
label = 'Sjukdomsfall'
elif text.lower().find('brand') >= 0:
label = 'Brand'
elif text.lower().find('trauma') >= 0:
label = 'Trauma'
elif text.lower().encode('utf8').find('Järnväg - påkörd person') >= 0:
label = 'Järnväg - påkörd person'
elif text.lower().encode('utf8').find('övrigt ambulansassistans') >= 0:
label = 'Ambulansassistans'
else:
label = 'Okänt larm'
return label
答案 0 :(得分:2)
列出要找到的字符串和对应标签的对(元组)。
然后遍历该列表直到找到匹配项,选择相应的标签并中断(或直接返回)。以下是示例代码:
def findlarm(text):
labels = [('foo', 'bar'), ('hans', 'wurst')]
test = text.lower() #.encode('utf8')
for l in labels:
if test.find(l[0]) >= 0:
return l[1]
return 'Okänt larm'
当我使用Python 3时,我注释掉了encode()调用。
答案 1 :(得分:2)
你可以使用for循环,但我认为这是一个使用for-in
循环的好地方,以及字符串方法capitalize()
:
mylist = [
'brand i byggnad industri',
'trafikolycka påkörd person',
# etc.
]
label = None
for term in mylist:
if text.lower().encode('utf8').find(term) >= 0:
label = term.capitalize()
break
return label # returns None if none of the terms were found
编辑:正如另一位用户指出的那样,并非所有标签都是要查找的文本的大写版本。如果你需要不同的标签,那么另一个答案就更好了。