2016-03-05 83 views
0

我有存儲在可變基於Python中的詞典值從字符串數組中刪除單詞?

resultSynRealUni=["Adam went","Alex is in school", "John met Mark"] 

模式列表讓我們假設「去」 &「是」 &「學校」和「標記」他們的字典低於4(某一閾值)

所以我想輸出爲

finalPatternSynReal=["Adam ","Alex in ", "John met "] 

我試過,但由於某種原因,它不工作

finalPatternSynReal=[] 

for place in resultsSynRealUni: 
    for word in place.strip().split(): 
     wordUni=u"" + u"".join(word) + u"" 
     if dict[wordUni] <= 4: 
      place=place.replace(wordUni,"").strip() 

    finalPatternSynReal.append(place) 
print("Final Pattern is") 
print(finalPatternSynReal) 

輸出: 上午 前

注:在我的代碼我使用阿拉伯語不是英語。

+0

爲什麼你使用'ü 「」+ u「」。join(word)+ u「」'?除了解碼爲Unicode(使用ASCII編碼解碼器)之外,這不起任何作用。 –

+1

你可以與我們分享'dict'(你真的不應該叫'dict',因爲它掩蓋了內置的類型)。聽起來好像'dict [wordUni] <= 4'從來都不是真的。 –

+0

@MartijnPieters我用那條線實際上是阿拉伯語言,但我用英語發佈我的問題,這樣可以理解 事情是我不能分享真正的字典分數,你是否介意檢查我真正的問題我發佈它使用阿拉伯語言http://stackoverflow.com/questions/35816893/how-to-remove-a-word-from-an-array-in-python –

回答

0

考慮您有:

resultSynRealUni=["Adam went","Alex is in school", "John met Mark"] 

和低於scores詞典:

scores = { "went": 1, "is": 2, "school": 3, "Mark": 2 } 

你想可能是什麼:

finalPatternSynReal = [] 
for statement in resultSynRealUni: 
    out_stmt = [] 
    for token in statement.strip().split(): 
     if not (token in scores.keys() and scores[token] <= 4): 
      out_stmt.append(token) 
    finalPatternSynReal.append(" ".join(out_stmt)) 

結果:

>>> finalPatternSynReal 
['Adam', 'Alex in', 'John met'] 

(遺憾的是簡短明瞭的有關解決方案,但我得到了家裏的一些朋友,我花了5分鐘來回答您的問與答;-))

HTH

相關問題