2015-12-03 99 views
1

我試圖從文本文件加載到Python的句子列表。Python的白癡時刻:字符串索引必須是整數,而不是str

input_file = open('goods.txt', 'r') 
goods = input_file.readlines() 

print('# of goods:', len(goods)) 
for goodies in goods[:5]: 
    print(goodies["text"]) 

我得到的輸出是:

TypeError: string indices must be integers, not str 

我在做什麼錯?

+0

爲什麼'好東西[「文本」]'而不是簡單'好東西'? – plonser

+1

什麼是好東西[「文本」]應該是什麼?你有沒有想過'好東西'是一個字典? – user2357112

+0

'file.readlines()'返回一個字符串列表,然後嘗試訪問'file.readlines()[0] ['text']'。 – vaultah

回答

2

goods是一個列表,而不是字典。你不能用一個字符串索引一個列表。

Python docs

file.readlines([sizehint])

使用的readline讀直至EOF(),並返回含如此讀取的線的列表。如果存在可選的sizehint參數,而不是讀取到EOF,則會讀取總計約爲sizehint字節的整行(可能在四捨五入到內部緩衝區大小之後)。實現類似文件的界面的對象可能會選擇忽略sizehint,如果它無法實現,或無法有效實施。

您的代碼應該是這個樣子:

file = open('goods.txt', 'r') 
goods = file.readlines() 

print('# of goods:', len(goods)) 
for i, goodies in enumerate(goods): 
    print(goodies) # same as print(goods[i]) 
    # example of string manipulation 
    goods[i] = goods[i].strip() 

每個項目在goods是從goods.txt線的字符串。這將一次打印該文件中的每一行。

for循環中添加[:5]將僅對文件的前五行進行迭代,如果這是您想要的。

+0

如何將貨物變成字典? –

+0

字典需要每個值的唯一鍵。例如,這個詞典有一個項目,其值是一個字符串列表:'d = {'key':['v','a','l','u','e']}'。你的預期產出是多少?你想在你的字典中的每個項目的關鍵是什麼? – iled

+0

所以我想要做的是將一行文本文件導入到一個數組中,以便我可以迭代地清理它,稍後刪除停用詞等。 –

0

您正在嘗試像字典一樣訪問goodies,但顯然情況並非如此。 打印goodies沒有["text"]看看它是你想要的。

+0

如何將貨物變成字典? –

-1

商品是一個列表,而不是一個字典。你不能用一個字符串索引一個列表。

+0

這已經在提供的兩個答案中得到確定。 –

+0

那又如何?我不能回答它爲什麼如此苛刻 –

+0

您是否問爲什麼添加一個只包含其他兩個早期答案中已包含的信息的差的答案會得到低估? –

相關問題