2015-12-03 50 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

您是否问为什么添加一个只包含其他两个早期答案中已包含的信息的差的答案会得到低估? –

相关问题