我是靠谱客的博主 忐忑饼干,最近开发中收集的这篇文章主要介绍python字符串索引必须是整数_关于python:TypeError:列表索引必须是整数或切片,而不是字符串...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

所以我在尝试运行以下代码时遇到此错误,我首先想到这可能是我没有正确将字符串转换为列表,但是在我看来这是正确的还是我错了? , 谢谢。

这是我正在尝试运行代码的内容:

u0 +++ $ +++ u2 +++ $ +++ m0 +++ $ +++ ['L194','L195','L196','L197']

u0 +++ $ +++ u2 +++ $ +++ m0 +++ $ +++ ['L198','L199']

u0 +++ $ +++ u2 +++ $ +++ m0 +++ $ +++ ['L200','L201','L202','L203']

u0 +++ $ +++ u2 +++ $ +++ m0 +++ $ +++ ['L204','L205','L206']

u0 +++ $ +++ u2 +++ $ +++ m0 +++ $ +++ ['L207','L208']

conversations_fields = ['Character_one_ID' , 'Character_two_ID' , 'Movie_ID' , 'utteranceIDs']

conversations = []

with open("./cornell movie-dialogs corpus/movie_conversations.txt", 'r', encoding='iso-8859-1') as f:

for line in f:

values = line.split(" +++$+++")

# Extract fields

convObj = {}

for i, field in enumerate(conversations_fields):

convObj[field] = values[i]

# Convert string to list (convObj["utteranceIDs"] =="['L598485', 'L598486', ...]")

lineIds = eval(convObj["utteranceIDs"])

# Reassemble lines

convObj['lines'] = []

for lineId in lineIds:

convObj['lines'].append(lines[lineId]

conversations.append(convObj)

TypeError跟踪(最近一次通话)

in ()

13         convObj['lines'] = []

14         for lineId in lineIds:

---> 15             convObj['lines'].append(lines[lineId])

16         conversations.append(convObj)

TypeError:列表索引必须是整数或切片,而不是str

为什么正在使用一种不好的做法

请显示完整的追溯。 该错误发生在哪里?

lineIds = convObj['utteranceIDs']用"['L194', 'L195', 'L196', 'L197']"的eval填充-请参阅为什么使用eval是一种不好的做法?:

lineIds = eval(convObj["utteranceIDs"])

lineIds是一个字符串列表,lineID也是一个字符串("L194"然后是"L195"等等...)-您不能使用它来索引到lines:

for lineId in lineIds:

convObj['lines'].append(lines[lineId])   # you also missed a ) here

谢谢,现在我明白了,病态改变了。

最后

以上就是忐忑饼干为你收集整理的python字符串索引必须是整数_关于python:TypeError:列表索引必须是整数或切片,而不是字符串...的全部内容,希望文章能够帮你解决python字符串索引必须是整数_关于python:TypeError:列表索引必须是整数或切片,而不是字符串...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部