python3中的 format 輸出問題

2021-08-26 14:52:16 字數 3223 閱讀 5438

今天使用python的format進行輸出,結果遇到了無法成功輸出的問題,感到十分奇怪,見下所示:

# -*- coding: utf-8 -*

from urllib import request

import requests

import json

from bs4 import beautifulsoup

import re

url1 =

''#獲取全國幾千個縣以上單位的城市**

url2 =

''#一次性獲取全國+國外主要城市,8763個城市列表資訊。

try:

r=requests.get(url1)

#連線url並開啟

sta=r.status_code #返回狀態

if sta ==

200:

print

("連線中國天氣網成功"

)except

:print

("連線中國天氣網請求失敗"

)else

: r.encoding=

'utf-8'

text1 =

(r.text)

#print(type(text1))

#print(text1)

weather_info = text1.split(

'\r\n'

)#print(weather_info)

#html = request.urlopen(url1).read().decode('utf-8')

#print("輸出urlopen函式得到的內容:")

#print(html)

#print(type(html))

#if html == text1:

#print("the same function")

still =

1while still>0:

print

("請輸入城市名字:"

) cityname =

input()

for index in

range

(len

(weather_info)):

qu = re.search(r'.*city quname=(.*) .*'

,weather_info[index]

, re.m|re.i)

if qu:

city = re.search(r'.*cityname="(.*?)".*'

,weather_info[index]

, re.m|re.i)

if city:

#print(city.group(1))

if city.group(1)

== cityname:

wea_info1 = re.search(r'.*city quname="(.*?)" .*'

,weather_info[index]

, re.m|re.i)

wea_info2 = re.search(r'.*cityname="(.*?)" .*'

,weather_info[index]

, re.m|re.i)

wea_info3 = re.search(r'.*statedetailed="(.*?)" .*'

,weather_info[index]

, re.m|re.i)

wea_info4 = re.search(r'.*tem1="(.*?)" .*'

,weather_info[index]

, re.m|re.i)

wea_info5 = re.search(r'.*tem2="(.*?)" .*'

,weather_info[index]

, re.m|re.i)

wea_info6 = re.search(r'.*windstate="(.*?)".*'

, weather_info[index]

, re.m | re.i)

print

(type

(wea_info4.group(1)

))print

(wea_info5.group(1)

)print

(" 城市:"

+wea_info1.group(1)

+wea_info2.group(1)

+'\n'

+"天氣狀況:"

+wea_info3.group(1)

+'\n'

+'氣溫:-\n'

+"風力狀況:"

+wea_info6.group(1)

+'\n'

.format

(wea_info5.group(1)

,wea_info4.group(1)

))print

("氣溫:-\n"

.format

(wea_info5.group(1)

,wea_info4.group(1)

))break

else

:#print("not found")

print

("sorry,city not found"

)print

("是否希望繼續查詢?"

)print

("是,輸入1\n否,輸入0"

) still =

int(

input()

)

**用來實現對中國天氣網的天氣狀況的抓取,並利用正規表示式對抓取下來的字串資訊進行操作,獲得所需的資訊,但是輸出結果卻是:

可以看到氣溫一欄並沒有成功輸出,但是後面再次重新打print卻又成功輸出,查閱網上資料發現str.format()前面只能是字串,而不可以是字串和變數組合起來的東西,哪怕變數是字串也不行,換句話說,也就是format前面的必須是在引號裡面,方才可以成功輸出,否則就會出現把{}輸出的結果。

總結而言,也就是說,如果要使用.format輸出,就得把變數全部放到format中,前面是乙個引號中的字串。要麼就乾脆用字串的連線符合%d,%s等方式輸出。

注:後又經過嘗試發現實際上實際上%s,%d等輸出與.format是相同的,都是前面是乙個str,且在乙個引號裡面,要麼全部都用字串連線符等輸出。

python3中的format函式

原文出處 format函式常與print 函式結合使用,具備很強的格式化輸出能力。通過變數,逗號隔開 print 今天 format 我 攔路雨 action 在寫部落格 通過關鍵字使用字典傳入,在字典前加入 grade print 比較無聊,在 format grade 字典前加上 通過位置 pr...

python中format輸出常用的3種格式

1 name input 請輸入暱稱 2 age input 請輸入年齡 3 money input 請輸入年薪 4 hobby input 請輸入興趣 56 變數賦值 7print 8姓名 9年齡 歲 10年薪 萬 11興趣 12 13 format ag age,mon money,hob ho...

python3中異常處理 Python3異常處理

python的異常處理機制 使用 try.except 捕獲異常 try 業務實現 except error1,error2,as e 出現異常後的處理 異常類的繼承關係 baseexception systemexit keyboardinterrupt generatorexit excepti...