Если вам нужна локальная база данных, вы можете проверить, что IPInfoDB может предложить.
Если вы можете использовать веб-службу, там есть номер, но Я не уверен, что позволяют их Условия предоставления услуг. Поиск Google для «веб-службы поиска геолокации ip» раскрывает некоторые вещи, но многие из них являются коммерческими продуктами, и вам нужно будет внимательно прочитать их ToS, чтобы убедиться, что вы используете их в рамках рекомендаций.
Это должно сработать, если вы хотите сохранить первое вхождение каждого нецифрового слова. Вы всегда можете обмануть условие, чтобы оно имело максимум две цифры.
def cleanup(s):
words = set()
for (word, nextword) in zip(s.split(), s.split()[1:] + [None]):
if word.isdigit():
yield word
continue
if not word in words:
words.add(word)
yield word
elif nextword and nextword.isdigit():
yield word
print ' '.join(cleanup("East Zone Mbc26 East Zone 1 2nd S11B Smds Smoke Damper 1 Status"))
print ' '.join(cleanup("GF Command Room 1 Unit 1 Flow Temperature Temperature"))
Выход
East Zone Mbc26 Zone 1 2nd S11B Smds Smoke Damper 1 Status
GF Command Room 1 Unit 1 Flow Temperature