python - 为什么我得到的是生成器对象而不是整数?

标签 python python-3.x

我正在使用 requestsbs4 从网站解析一些 XML:

import requests
from bs4 import BeautifulSoup as bs

r = requests.get("http://xml.skiddlecdn.co.uk/xml/affiliates/topsellers.xml")

if r.status_code == 200:
    data = bs(r.text, 'xml')
    raw_dates = data.find_all('date')
    dates = [date.string for date in raw_dates]
    for date in sorted(dates):
        print("{}. {}".format(i for i in range(1, len(dates))), date))
else:
    r.raise_for_status()

我的预期结果:

1. 2017-01-17
2. 2017-01-20
3. 2017-01-20
# etc...

我的实际结果:

<generator object <genexpr> at 0x06022B70>. 2017-01-17
<generator object <genexpr> at 0x06022B70>. 2017-01-20
<generator object <genexpr> at 0x06022B70>. 2017-01-20
# etc...

为什么?

最佳答案

它会打印一个生成器,因为您向它传递了一个生成器。我假设您只想显示带有索引值的日期。为什么不使用enumerate来代替呢?

for i, date in enumerate(sorted(dates), 1):
    print("{}. {}".format(i, date))

关于python - 为什么我得到的是生成器对象而不是整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49130624/

相关文章:

python - 当子进程引发 CalledProcessError 异常时检查命令的返回码

python - python中的列表理解中只有正数

python - 如何在Python多模块的覆盖范围中排除目录

python - pyPEG - 由 `flag()` 函数识别的数据被 `compose()` 函数错误地返回

python - 替换 numpy 数组中包含 NaN 的值

python - 分配给无

python - 将 'bytes' 对象转换为字符串

python-3.x - mystic 能否解决带约束的黑盒优化问题?

python - 有多个条件时替换numpy数组中的元素

python - 我应该使用 Python 还是 Ruby 来创建跨平台的编译应用程序?