【问题标题】:Python split OR loop OR str function running outofIndex dealing with big list - works okay with shorter listPython split OR loop OR str 函数运行 outofIndex 处理大列表-适用于较短的列表
【发布时间】:2019-07-30 15:35:53
【问题描述】:

我使用了列表中的简单字符串转换函数(实际上是 dict),并且字符串函数用完了索引到期(它最终以 None 作为输入之一)。下面的函数调用在遇到错误字符串时会杀死它

test_s=s_i.split("Inv/", 1)[1].split(">",1)[0]

Q1) 我的循环在拆分时中断,拆分时会吐出列表索引超出范围错误。如何让它跳过这个字符串,显示警告,仍然继续用 + 连接字符串?
或者你能帮忙提出更好的方法来做这个拆分吗?

Q2) 如何解决拆分问题? (即我该如何调试)

Q3) 另外,如何在 python 中输入(提示 python 用户输入提示)相同的列表?

下面是我尝试运行的代码: 示例输入 - 它实际上是 100 多个项目的列表:

a_dict={'1234': <Batman:/Inv/Batman/xyzhash>,'4567': <Superman:/Inv/Superman/xyzhash, ..100 more items>

test_f=""
test_s=""
s_i=""

for ind_values in a_dict.values():
    s_i=str(ind_values)  
    test_s=s_i.split("Inv/", 1)[1].split(">",1)[0]
    test_f +=test_s+","

s_i=str(ind_values) 是第 26 行,但我认为它正在吹向 test_s=s_i.split("Inv/", 1)[1].split("&gt;",1)[0]

Error message:
Traceback (most recent call last):
  File "<string>", line 26, in <module>
IndexError: list index out of range

【问题讨论】:

  • 100+ 项并不大
  • 您在test_s=s_i.split("Inv/", 1)[1].split("&gt;",1)[0] 中塞满了很多东西 - 其中一个列表比您想象的要短,也许可以尝试在那里进行一些调试。
  • 您应该发布完整的回溯。这将显示你有错误的实际行。
  • list_with_hundreds_of_items 似乎是 dict?
  • 什么是a_list?如果你在上面调用values,我很确定它不是一个列表......

标签: python string list loops


【解决方案1】:

s_i=str(ind_values) 是第 26 行。

不,不是。错误在下一行:

test_s=s_i.split("Inv/", 1)[1].split(">",1)[0]

您可以判断,因为错误消息表明 list indexout of range,而这是您尝试将 index 用于 list 的行 - 在两个地方。

第一个是问题:s_i.split("Inv/", 1)[1]。如果"Inv/" 没有出现在字符串中,那么.split 调用将产生一个只有一个项目的列表,它只有一个[0] 索引而不是[1] 索引。 .split1 参数仅指定 最大 个拆分数,而不是 必需 个数。

【讨论】:

  • 谢谢@Karl Knechtel。我发现对于其中一个输入键 dict) 是错误的,并且 split 为此返回 NONE 。我的循环在那里中断并分裂出列表索引超出范围的错误。如何让它跳过这个字符串,显示警告,仍然继续用 + 连接字符串?抱歉回复晚了,当我们进行对话时,unfort stackoverflow 已关闭。
  • *** if s_i.split("Inv/", 1)[1])=None** 显示错误,跳过此循环运行,并移至下一项**
猜你喜欢
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2017-03-11
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 2017-07-25
相关资源
最近更新 更多