Python拼接含日期的URL时出现None,如何解决?
解决URL拼接后出现None的问题
问题出在你把print()函数的返回值赋值给了todayurl——print()的作用是将内容输出到控制台,它本身的返回值永远是None,这就是你看到额外输出None的原因,同时这也导致todayurl实际是None,无法用于requests请求。
正确的做法是先拼接出完整的URL字符串,再赋值给todayurl,之后如果需要打印再调用print()。以下是几种可行的实现方式:
方法1:使用f-string(推荐,Python3.6+支持)
f-string是最简洁直观的字符串格式化方式:
from datetime import date import requests today = date.today() # 直接用f-string插入日期变量 todayurl = f'https://www.bling.com.br/Api/v3/nfe?pagina=1&limite=100&situacao=1&tipo=1&dataEmissaoInicial={today}&dataEmissaoFinal={today}' print(todayurl) # 打印正确的URL # 正常发起请求 response = requests.get(todayurl) # 后续处理Slack发送逻辑
方法2:字符串拼接
通过加号连接字符串,注意需要把date对象转为字符串:
from datetime import date import requests today = date.today() today_str = str(today) todayurl = 'https://www.bling.com.br/Api/v3/nfe?pagina=1&limite=100&situacao=1&tipo=1&dataEmissaoInicial=' + today_str + '&dataEmissaoFinal=' + today_str print(todayurl) response = requests.get(todayurl)
方法3:使用str.format()
如果需要兼容Python3.6之前的版本,可以用这种方式:
from datetime import date import requests today = date.today() todayurl = 'https://www.bling.com.br/Api/v3/nfe?pagina=1&limite=100&situacao=1&tipo=1&dataEmissaoInicial={}&dataEmissaoFinal={}'.format(today, today) print(todayurl) response = requests.get(todayurl)
上述任何一种方法都能让todayurl存储正确的URL字符串,不会再出现None,可以正常用于requests请求。
内容的提问来源于stack exchange,提问作者arthur batista
相关产品推荐
相关产品推荐

