Python:字符串索引必须是整数,而不是str

Python:字符串索引必须是整数,而不是str,python,text,Python,Text,我正在尝试从文本文件将一系列句子加载到Python中 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 我做错了什么

我正在尝试从文本文件将一系列句子加载到Python中

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

我做错了什么?

你试图像查字典一样查阅
好东西,但显然不是这样。

不使用
[“text”]
打印
商品
,查看它是否是您想要的。

商品
是一个列表,而不是目录。您不能用字符串索引列表

从:

file.readlines([sizehint])

使用readline()读取直到EOF,并返回一个包含这样读取的行的列表。如果存在可选的sizehint参数,则将读取总计约为sizehint字节的整行(可能在四舍五入到内部缓冲区大小之后),而不是读取到EOF。如果sizehint无法实现或无法有效实现,则实现类似文件的接口的对象可能会选择忽略它

您的代码应该如下所示:

file=open('goods.txt','r')
goods=file.readlines()
印刷品(‘货物名称:’,透镜(货物))
对于我来说,列举(商品)中的好东西:
印刷品(商品)#与印刷品(商品[i]相同)
#字符串操作示例
货物[i]=货物[i].带()
goods
中的每个项目都是一个字符串,带有
goods.txt
中的一行。这将打印该文件中的每一行,一次打印一行


for
循环中添加
[:5]
只会迭代文件的前五行,如果这是您想要的。

商品是一个列表,而不是目录。您不能用字符串索引列表。

为什么
商品[“文本”]
而不仅仅是
商品
?什么是
商品[“文本”
?您是否希望
goodies
以某种方式成为dict?
file.readlines()
返回字符串列表,然后您尝试访问
file.readlines()[0]['text']
。您的文件中有什么内容,您试图提取什么内容?因此,我尝试将一个包含行的文本文件放入一个数组中,以便迭代地清理它,稍后删除停止字等。dict要求每个值都有一个唯一的键。例如,此dict有一个项,其值是字符串列表:
d={'key':['v','a','l','u','e']}
。你的预期产出是多少?你想要什么作为dict中每个项目的键?所以我想做的是将一个包含行的文本文件放入一个数组中,这样我可以迭代地清理它,删除停止词,等等。我应该补充一点,我是一个PHP人,继承了一些Python代码,因此,我提出了一些愚蠢的问题。出于这个目的,字符串列表似乎比dict更合适。只要用任何字符串操作方法替换
print(goodies)
。别忘了保存结果。我将编辑我的答案以反映这一点。谢谢!这很有帮助。我继承的代码在几个实例中都有这种情况,所以下一步将是学习Python…在提供的两个答案中已经确定了这一点。然后呢?我能不能也回答一下为什么这么苛刻?你为什么要问,为什么添加一个只包含其他两个答案中已经包含的信息的糟糕答案会获得否决票?这意味着你还说其他两个答案也很糟糕