2013-12-10 55 views
0

我正在嘗試製作一個程序,該程序將接受輸入,查看是否有任何這些單詞是先前定義的字典中的鍵,然後替換任何發現的單詞與他們的條目。難點在於「看看單詞是否是關鍵」。例如,如果我想在這個字典替換項:Python - 用字典中的條目替換字符串中的單詞

dictionary = {"hello": "foo", "world": "bar"} 

我怎樣才能使給定的輸入的「Hello World」時,它打印「富巴」?

回答

1

這工作在Python 2.x中:

dictionary = {"hello": "foo", "world": "bar"} 
inp = raw_input(":") 
for key in inp.split(): 
    try: 
     print dictionary[key], 
    except KeyError: 
     continue 

但是,如果你是Python的3.x的,你會想這樣的:

dictionary = {"hello": "foo", "world": "bar"} 
inp = input(":") 
for key in inp.split(): 
    try: 
     print(dictionary[key], end="") 
    except KeyError: 
     continue 
1

假設一個 「字」 是一個連續的字符序列,您可以將輸入拆分爲空格,然後爲每個單詞檢查它是否在字典中。

new_str = "" 
words = your_input.split(" ") 
for i in range(0, len(words)): 
    word = words[i] 
    if word in dictionary: 
    words[i] = dictionary[word] 

現在您可以對最終的單詞列表做些什麼。例如,他們一起用空格

" ".join(words) 
1

不同的方法一起分離

​​
+0

你可以在python的任何地方使用「k」和「v」來表示鍵和值嗎?如果不是,在這段代碼中它定義了k是一個鍵,v是一個字典的值? – wakkydude

+1

@wakkydude「for k,v in ...」位將iteritems()返回的元組解包爲這些名稱。你可以任意調用它們,但'k'和'​​v'是典型的名字。 – geoffspear

1

最簡潔的方法是使用dict.get退卻到這個詞本身,如果這個詞是不是在詞典:

' '.join([dictionary.get(word,word) for word in 'hello world'.split()]) 
+0

提示:無論何時使用'str.join',使用列表理解生成器表達式。參考:http://stackoverflow.com/a/9061024/2555451 – iCodez

+0

@iCodez是的,我總是忘記一個。謝謝。 – roippi

相關問題