關於使用 format()出現亂序的問題

2021-08-26 17:51:55 字數 1565 閱讀 3753

前景提要

在用網路爬蟲爬取鬥破蒼穹**的時候,發現構建多頁urls時,urls的順序不是按照1,2,3,4…的順序排列,而是處於3,2,4,8,1…這種無序的狀態。其他的寫入txt文件等,都可以正常工作,此時寫入txt的文章順序是打亂的,但是都可以都可以爬下來。

經檢查後發現是乙個很小的問題導致了這種情況。

錯誤的**

import requests

import re

import time

headers=

f=open('doupocangqiong.txt','a+')

def get_info(url):

res=requests.get(url,headers=headers)

if res.status_code==200:

contents=re.findall('',res.content.decode('utf-8'))

for content in contents:

f.write(content+'\n')

else:

pass

if __name__=='__main__':

urls=.html'.format(number) for number in range(1, 1666)}

for url in urls:

get_info(url)

print(url)

f.close()

此時輸出的結果是亂序的

urls也是亂序。

import requests

import re

import time

headers=

f=open('doupocangqiong.txt','a+')

def get_info(url):

res=requests.get(url,headers=headers)

if res.status_code==200:

contents=re.findall('',res.content.decode('utf-8'))

for content in contents:

f.write(content+'\n')#這個地方還是有一點不是特別明白

else:

pass

if __name__=='__main__':

urls=[''.format(number) for number in range(1, 1666)]

for url in urls:

get_info(url)

print(url)

f.close()

此時輸出的**是正確的。

錯誤原因

構造多頁urls時使用了urls=構造了乙個類似字典的東西,於是就導致了亂序的發生。

解決方法

將urls=

換成urls=【】就可以解決掉亂序的問題,成功輸出順序的**。。

關於TCP重傳 亂序和重複的問題

tcp是一種巨複雜的協議,本篇文章旨在簡單說明一些資料傳輸過程中常見的問題,對於涉及的演算法目前並不會詳細闡述 主要是個人能力原因 tcp提供兩種重傳的機制,一種是基於時間的超時重傳,一種是基於接收端反饋訊息的快速重傳。相比之下前者占用更少的網路頻寬,但是效率很低。而後者則相反。下面我們來具體看一下...

format格式化的使用

說明 format 通過 來替換 進行格式化,叫做佔位符 形式的格式化,是從c語言繼承過來的,printf style 字串格式化語法 1,s i love s.format python 會列印 i love python 2,s i love i am s.format python 18 會列...

python的format方法使用詳解

從python2.6開始,新增了一種格式化字串的函式str.format 它增強了字串格式化的功能。基本語法是通過 和 來代替以前的 format方法可以接受無限個引數,位置可以不按順序。不指定format方法的關鍵字引數 format hello world 不設定指定位置,按預設順序 hello...