用python和TypeError解析特定值:列表索引必须是整数或片,而不是str,怎么做到这一点?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (505)

我的意图是解析文本,其中包含如下格式的行:

date time number

我想用它做一些简单的统计。

最棘手的事情是创建一个系统,它将创建一个int在任何给定日期,只有最高的“数字”。

即考虑到以下情况:

以下是Num.txt

2018-06-11 12:29 692
2018-06-11 12:55 690
2018-06-11 13:00 690
2018-06-11 14:40 690
2018-06-11 15:01 690 <-- this one
2018-06-12 06:00 687
2018-06-12 09:27 688
2018-06-12 09:30 688
2018-06-12 09:37 688
2018-06-12 09:48 688
2018-06-12 10:08 688 <-- this one
2018-06-13 06:00 699
2018-06-13 08:06 700
2018-06-13 10:34 702
2018-06-13 10:40 702 <-- this one
2018-06-14 06:00 709 <-- this one
2018-06-15 06:57 719 <-- this one
2018-06-16 07:50 721 <-- this one

所以在这个例子中,列表将包含690, 688, 702, 709, 719, 721

此外,我希望每次代码运行时,它都会使用文件中的当前数据生成新列表,并且我似乎能够为它创建一个循环。

这是我的代码:

#open the file and create a list with the lines:

file = open("followerNum.txt").read().splitlines()

#get the first and last 'words' of the first line

date,b,folnum= file[0].split(" ")

#get the first and last 'words' of the second line

date2,b,folnum2 = file[1].split(" ")
#check if it worked
print(date, date2)

for i in file:

  if date2 == date:   #If both are equal, then replace it 
    folnum= file[i].split(" ",-1)
  else:               if not, append 
    folnum.append(file[i].split(" ",-1))

当我运行它时,我得到:

folnum= file[i].split(" ",-1)
TypeError: list indices must be integers or slices, not str

我该怎么做呢?

提问于
用户回答回答于

在此:

folnum= file[i].split(" ",-1)

当你创建一个for循环状态时i是类型的str 而不是int

for i in file: # i is of type string not integer
    # in this case you has something like this
    file['a'].split(' ', -1) # ['a'] is for example, 

在这种情况下,当我们调用lst['string']我们得到

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

你得先查一下你有什么i变量,你可以使用i.split()

lines = open("demo.txt").read().splitlines()
...
for line in lines:
    ...
    line.split(' ', -1)
    ...
用户回答回答于

改变:

for i in file:

for i, line in enumerate(file):

这样,我将是一个整数索引,而不是一个字符串,行是字符串。

扫码关注云+社区

领取腾讯云代金券