我列出了'城市':
US,Upper St. Clair
US,VCT,Victoria,Viktorija,bigtolia,bikutoria,fyktwrya tksas,wei duo li ya,wyktwrya tgzas,Виктория,Викторија,فيكتوريا، تكساس,ویکتوریا، تگزاس,ビクトリア,維多利亞,빅토리아
US,VCV,Victorville,Viktorvil,Vikturvil,bhiktarabhila,bigteobil,fyktwrfyly san byrnardynw kalyfwrnya,vu~ikutavu~iru,wei ke duo wei er,wyktwr wyl kalyfrnya,Викторвил,Виктървил,فيكتورفيلي، سان بيرناردينو، كاليفورنيا,وکٹورولے,ویکتور ویل، کالیفرنیا,भिक्टरभिल,ヴィクターヴィル,维克多维尔,빅터빌
US,VIS,Vajsejlija,Vajselija,Visalia,Visejlija,baiseiria,bhisaliya,fysalya kalyfwrnya,wei sai li ya,wysalya,wysalya kalyfrnya,Вайселия,Вајсејлија,Висейлия,فيساليا، كاليفورنيا,ویسالیا,ویسالیا، کالیفرنیا,भिसालिया,バイセイリア,維塞利亞
US,VKS,Vicksburgum,Viksberg,Viksburg,bigseubeogeu,vu~ikkusubagu,wei ke si bao,wyksbrg mysysypy,Виксберг,Виксбург,Виксбърг,ویکسبرگ، میسیسیپی,ヴィックスバーグ,维克斯堡,빅스버그
US,VLD,Valdosta,Валдоста
US,VLO,Val'ekho,Valejo,Valekho,Vallejo,balleio,bhyalejo,falyjw kalyfwrnya,vu~areho,walhw kalyfrnya,walyjw,wei li he,Валехо,Валејо,Вальехо,فاليجو، كاليفورنيا,والهو، کالیفرنیا,والیجو
还有一个包含任何城市名称的句子列表。
问题是我如何相互交叉?这两个实体为了拥有最终的数组
'this particular text'
有'this particular city inside'
?
Python 2.7
谢谢。
更新: 输出可以是如下字典:
{
'Los-Angeles': 'something is going on in Los Angeles',
'Washington': 'something is happenes in Washington!',
...
}
答案 0 :(得分:1)
因此,您必须先将城市拆分为别名,然后在文本中搜索它们:
all_cities = {}
with open('cities') as cities:
for city in cities:
city = city.strip()
parts = city.split(',')
all_cities.update((part, parts[:2]) for part in parts[1:]) # skip the "US"
for city in all_cities:
if city in some_text:
print all_cities[city]
答案 1 :(得分:1)
你可以这样做!
from collections import defaultdict
from itertools import product
from pprint import pprint
cities = [
'Copenhagen',
'Berlin',
'Stockholm'
]
sentences = [
'Hello world',
'Hello Copenhagen',
'Hello Berlin',
'Bye Berlin',
]
res = defaultdict(list)
for city, sentence in product(cities, sentences):
if city in sentence:
res[city].append(sentence)
pprint(res)
导致输出:
~ python test.py
{'Berlin': ['Hello Berlin', 'Bye Berlin'],
'Copenhagen': ['Hello Copenhagen']}