搜索字符串键的字符串,如果包含,则显示键值

时间:2018-02-12 20:14:36

标签: python python-3.x dictionary twitter

我正在尝试让我的程序读取推文,并通过查看我的字典在该推文中查找公司名称。如果找到公司名称,我希望它返回与该公司名称相关的股票代码。当字典键是一个单词时,我可以让它工作,但它不会显示它是一个多字键,如CHINA UNICOM或EXPRESS SCRIPTS。有什么建议?我知道拆分推文使得搜索多字符串变得困难,但这是我唯一可以让它适用于像FACEBOOK和GOOGLE这样的单字公司名称。谢谢,这是我的代码。 (输入只是推文,我现在只是手动输入它们,直到我弄清楚如何让它工作)

dictionary = 
{'apple':'AAPL',
'google':'GOOG',
'alphabet':'GOOGL',
'microsoft':'MSFT',
'amazon':'AMZN',
'facebook':'FB',
'express scripts':'ESRX',
'china unicom':'CHU'}

data = "Google is in talks to acquire China Unicom"
tweet = data.lower()

if any(word in tweet for word in dictionary.keys()):
    for x in tweet.split():
        if x in dictionary.keys():
            print(dictionary[x])

我正在寻找的输出将是GOOG和CHU,但我只能获得GOOG。

2 个答案:

答案 0 :(得分:1)

如果您只需要打印连接到该公司名称的股票代码,您可以使用:

dictionary = 
{'apple':'AAPL',
'google':'GOOG',
'alphabet':'GOOGL',
'microsoft':'MSFT',
'amazon':'AMZN',
'facebook':'FB'}

data = input()
tweet = data.lower()

for key in dictionary.keys():
    if key in tweet:
        print(dictionary[key])

无论在输入中有多少单词,它都会在字典中运行所有键并检查与推文匹配,如果是真正的打印代码

答案 1 :(得分:0)

我认为你正在寻找条件理解:

dictionary = {'apple':'AAPL',
'google':'GOOG',
'alphabet':'GOOGL',
'microsoft':'MSFT',
'amazon':'AMZN',
'facebook':'FB',
'express scripts':'ESRX',
'china unicom':'CHU'}

data = 'Google is in talks to acquire China Unicom'

tweet = data.lower()

found = (dictionary[key] for key in dictionary.keys() if key in tweet)

for item in found:
    print(item)

输出:

GOOG
CHU