1

我讨厌我不得不问这样一个基本问题,但我似乎无法让 split 方法在 python 中工作。

我有一本字典,当我打印它时,它看起来像:

data_dict = <QueryDict: {u'ids': [u'1012,738'], u'ct': [u'9']}>

我想从“ids”列表中创建一个 id 对象数组,如下所示:

ids = [1012, 738]

看起来列表'ids'实际上只是一串用逗号分隔的id,所以我尝试了:

id_string = data_dict['ids']
ids = id_string.split(',')
for id in ids:
    print(id)

什么都没有打印。然后我想,也许 u' 意味着它不是字符串,我需要先将其转换为字符串才能拆分工作,所以我尝试了:

id_string = data_dict['ids']
id_string = str(id_string)
ids = id_string.split(',')
for id in ids:
    print(id)

什么都没有打印。不知道我做错了什么。

4

2 回答 2

2

data_dict['ids']看起来它实际上是一个包含字符串的列表。所以试试id_string = data_dict['ids'][0]

Au'foo'是一个 Unicode 字符串。它应该仍然具有所有正常的字符串方法。

此外,如果您使用 Django 并运行代码python manage.py runserver(而不是在生产环境中运行!),您可以注入import pdb; pdb.set_trace()您的代码。然后,当您加载页面时,服务器输出将包含一个 pdb 提示符,您可以使用它来进行实验,就像在 Python shell 中一样。

如果您确实以这种方式开始使用 PDB,请注意一点:PDB 有一些单字母命令和其他将优先于 Python 代码的内容。您可以使用!它来确保 PDB 像 Python 一样运行您的代码。例如:

(Pdb) list(range(3))
*** Error in argument: '(range(3))'

PDB 有自己的list命令,可用于显示源代码。

(Pdb) !list(range(3))
[0, 1, 2]

通过!首先使用,该命令会像 Python 一样被正确处理。

于 2013-06-21T16:14:49.800 回答
1

[u'1012,738']是一个列表,因此您必须使用它id_string = data_dict['ids'][0]来获取该列表中的第一个元素。

要将该字符串的项目转换为整数列表,请使用map或 a list comprehension

#map
map(int, data_dict['ids'][0].split(','))

#LC
[int(x) for x in data_dict['ids'][0].split(',')]

演示:

>>> strs = '1012,738'
>>> map(int, strs.split(','))
[1012, 738]
>>> [int(x) for x in  strs.split(',')]
[1012, 738]
于 2013-06-21T16:10:59.407 回答