2017-05-10 53 views
-1

我最近開始學習Python,並且直到現在,所有內容看起來都非常直觀。遍歷單詞列表以檢查是否有任何以Python開頭的給定字符串

我有一個文本文件,它有幾行數據。我遍歷每一行,將它分解成單詞,現在我想要遍歷給定行上的每個單詞,以檢查它是否以給定字符串開頭,如果是,則將單詞更改爲其他單詞。

到目前爲止,我有:

with open('test_inputfile.txt','r') as f: 
for line in f: 
    words = line.split('","') 
    for word in words: 
     if word.startswith('spam'): 
      # change given word 

但我似乎無法訪問的word.startswith()功能這不起作用。

我相信它一定很容易做到,因爲到目前爲止的其他一切都非常簡單!

謝謝。

+4

你可能有一個空的迭代器,因爲你應該分割爲'',''而不是''「,'''' –

+0

@MosesKoledoye不是空的,而是隻有一個元素:整個'line'。 – schwobaseggl

+0

@MosesKoledoye文本文件在單詞 – user1949213

回答

0

你可以試試這個:

f = open('test_inputfile.txt').readlines() 
f = [i.strip('\n').split(',') for i in f] 
for line in f: 
    for word in line: 
     if word.startswith('spam'): 

現在,F存儲包含各行中的所有單詞列表的列表。

0

如果您使用CSV數據,這可能會很有用。如果是這種情況,請將您的分組更改爲line.split(',')。否則見下文。

使用startswith函數時,不需要實際分割線條,因爲您只關心線條的起始位置。見here的詳細信息,在startswith功能

with open('test_inputfile.txt', 'r') as f: for line in f: if line.startswith('spam', 0, 4): # take action

這有效地檢查,如果這個詞「垃圾郵件」是在位置0至4

一切順利:)

+0

也許我不是'我想檢查每個WORD是否以'垃圾郵件'開頭,而不是每行。 感謝您的幫助! – user1949213

0

你可能會忘記去掉每行中的最初/最後一個雙引號。但我強烈建議您使用csv模塊來處理CSV數據:

import csv 
with open('test_inputfile.txt','r') as f: 
    reader = csv.reader(f, delimiter=',', quotechar='"') 
    # both params are the default values anyway 
    for row in reader: 
    for word in row: 
     if word.startswith('spam'): 
     # do stuff 
+0

感謝您的回答,但是,我得到了與我原來的代碼相同的問題:I不能使用單詞 – user1949213

0

你有一個這樣的文件:

"toast","eggs","bacon" 
"orangejuice","spamandtoast","bagels" 

讀取文件:

with open("test_inputfile.txt", "r") as fs: 
    for lines in fs: 
     line = lines.split(",") 
     for word in line: 
      word = word.replace('"','') # removes the quotes 
      if word.startswith("spam"): 
       print word 

您也可以創建一個在開始的空列表wordlist = []中,並將每個單詞添加到列表中。

wordlist.append(word)

更好地利用csv模塊。

+0

的.startswith()函數這與我的代碼基本相同,但我不能使用'words.startswith()'。 – user1949213

+0

請輸入您的輸入的一點點文本。 – bhansa

+0

看起來像這樣: '「吐司」,「雞蛋」,「培根」 「orangejuice」,「spamandtoast」,「百吉餅」' (其中'orangejuice'開始一個新行) 我想找到'spamandtoast',然後,例如,將其更改爲'酸奶' – user1949213

相關問題