May-16-2017, 09:10 PM
replying to another thread, I noticed something strange. following script, running python 2.7
import forecastio def main(): api_key = "API KEY" lat = -31.967819 lng = 115.87718 forecast = forecastio.load_forecast(api_key, lat, lng) by_day = forecast.daily() print "===========Daily Data=========" print "Daily Summary: %s" %(by_day.summary) print "===========Daily Data=========" print "Daily Summary: {}".format(by_day.summary) if __name__ == "__main__": main()and the result
Output:===========Daily Data=========
Daily Summary: Light rain on Friday through Monday, with temperatures falling to 15°C on Saturday.
===========Daily Data=========
Traceback (most recent call last):
File "dark.py", line 53, in <module>
main()
File "dark.py", line 46, in main
print "Daily Summary: {}".format(by_day.summary)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 68: ordinal not in range(128)
so old-style string formatting has no problem with unicode char, while new one - using format, raise error. The behavior still the same if explicitly specify {:s}. I find it odd that there is difference. Do I miss something?