为什么python引发错误:“需要浮点数参数,而不是unicode”

时间:2017-06-27 18:10:50

标签: python string unicode

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参数,但为什么它会导致“浮动”错误,%s不是字符串?

2 个答案:

答案 0 :(得分:3)

您的字符串中有加载 %格式化程序。 %E格式化float对象。你的字符串中有几个,包括在开头:

"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)
)

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

答案 1 :(得分: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)