【问题标题】:why python raise a error :“float argument required, not unicode”为什么python会报错:“float argument required, not unicode”
【发布时间】:2017-06-27 18:10:50
【问题描述】:
for each_ID ,each_Title in zip(Id,Title):
    url="http://www.zjjsggzy.gov.cn/%E6%96%B0%E6%B5%81%E7%A8%8B/%E6%8B%9B%E6%8A%95%E6%A0%87%E4%BF%A1%E6%81%AF/jyxx_1.html?iq=x&type=%E6%8B%9B%E6%A0%87%E5%85%AC%E5%91%8A&tpid=%s&tpTitle=%s"%(each_ID,each_Title)

“each_ID”和“each_Title”来自网站的unicode参数,但是为什么会导致“float”错误,%s不是字符串?

【问题讨论】:

  • 您的字符串中有 loads% 格式化程序。 %E 格式化一个浮点对象。

标签: python string unicode


【解决方案1】:

您的字符串中有 loads% 格式化程序。 %E 格式化一个浮点对象。您的字符串中有几个,包括开头:

"http://www.zjjsggzy.gov.cn/%E6
#                           ^^

您需要将 URL 字符转义中使用的每个 % 加倍

"http://www.zjjsggzy.gov.cn/%%E6%%96%%B0%%E6%%B5%%81%%E7%%A8%%8B/..."

这将是很多工作,您最好使用不同的字符串格式样式。使用str.format()

url = (
    "http://www.zjjsggzy.gov.cn/"
    "%E6%96%B0%E6%B5%81%E7%A8%8B/%E6%8B%9B%E6%8A%95%E6%A0%87%E4%BF%A1%E6%81%AF"
    "/jyxx_1.html?iq=x&type=%E6%8B%9B%E6%A0%87%E5%85%AC%E5%91%8A&"
    "tpid={}&tpTitle={}".format(
        each_ID, each_Title)
)

我将字符串分成多个块以便于阅读; {} 括号描述占位符。

【讨论】:

    【解决方案2】:

    尝试对字符串使用format 方法。现有的 '%' 字符与您的 %s 占位符冲突:

     for each_ID ,each_Title in zip(Id,Title):
      url="http://www.zjjsggzy.gov.cn/%E6%96%B0%E6%B5%81%E7%A8%8B/%E6%8B%9B%E6%8A%95%E6%A0%87%E4%BF%A1%E6%81%AF/jyxx_1.html?iq=x&type=%E6%8B%9B%E6%A0%87%E5%85%AC%E5%91%8A&tpid={}&tpTitle={}".format(each_ID, each_Title)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 2020-12-11
      • 2020-12-25
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多