【发布时间】:2017-06-30 21:44:18
【问题描述】:
我是 Python 新手,正在尝试将两个字符串添加到键值数组中。
这是我的代码:
import os
from numpy import genfromtxt
import re
script_dir = os.path.dirname(r'C:/Users/Kenny/Desktop/pythonReports/')
my_data = genfromtxt('allreports.csv', delimiter=',', dtype=None)
pattern_id = re.compile(r'(?<=eventid\=)(.*)(?=&key)', flags=re.DOTALL)
pattern_key = re.compile(r'(?<=key\=)(.*)(?=&cb)', flags=re.DOTALL)
id_key = {}
for row in my_data:
eventid = pattern_id.findall(row.decode('utf-8'))
eventkey = pattern_key.findall(row.decode('utf-8'))
id_key[eventid] = eventkey
print(id_key)
这基本上需要一个 url,并从中提取两件事。然后我想用这两个信息创建一个关联数组(键/值)。
示例数据为:{123456, 412F5BFE1D8A33BC}
并且有数百个 url,因此是数组的原因。
我得到的错误是:
Traceback (most recent call last):
File "script.py", line 20, in <module>
id_key[eventid] = [eventkey]
TypeError: list indices must be integers or slices, not list
感谢您对此的任何帮助,如果需要,我正在使用 Python3。
【问题讨论】:
-
这个错误很容易解释。我认为您正在寻找的是字典,因此将 `id_key = []` 替换为 `id_key = {}`
-
re.findall返回一个列表,而不是一个整数 -
列表不是关联数组。列表是序列。如果你想要一个关联数组,那就是 dicts 的用途。
-
@Ludisposed 哎呀,这就是我最初拥有它的方式
id_key = {},我为了测试目的进行了更改。 @Vinícius Aguiar 谢谢,我不知道 re.findall 返回了一个列表。