![](/img/trans.png)
[英]How to keep leading zeros in a column when reading CSV with Pandas?
[英]Keep leading zeros when saving numbers that start with 0
我正在嘗試保存站點代碼列表,例如:
site_codes = [1302,9033,1103,5005,0016]
然后我想在運行網絡抓取之前將站點代碼添加到 URL,使用site_codes[i]
,例如:
for i in range(len(site_codes)):
Data_site_A.append("https://.../"+str(parameters[i])+"site="+str(site_codes[0]))
Data_site_B.append("https://.../"+str(parameters[i])+"site="+str(site_codes[1]))
但是我不能像其他數字一樣將0016
保存到列表中。 我嘗試了很多方法,包括:
# make a string
str("{0}{1}{2}".format(0,0,16))
# fill the 0
"%04d" % 16
但它們都返回'0016'
而不是0016
。 因此,當我在網址中輸入'0016'
,它不起作用,因為它不是數字。
有沒有辦法像0016
一樣保存這個數字? 或者因為print("%04d" % 16)
會打印出一個純0016
,有沒有辦法從那里保存輸出?
對於所需的輸出,計算機應將其解釋為:
"https://...."+str(parameters[i])+"site=0016")
# use regular expression
import re
site_codes = '''
site code:
site_A: 1302
site_B: 9033
site_C: 1103
site_D: 5005
site_E: 0016
'''
site_codes = re.findall(r'\d+',site_codes)
for i in range(len(site_codes)):
Data_site_A.append("https://.../"+str(parameters[i])+"site="+str(site_codes[0]))
Data_site_B.append("https://.../"+str(parameters[i])+"site="+str(site_codes[1]))
使用str.zfill()
為數字添加前導零;
以數字為對象調用str(object)
以將其轉換為字符串。
對數字字符串調用str.zfill(width)
以將其填充為 0 到指定的寬度。
print(a_number)
OUTPUT=
123
將a_number
轉換為字符串
number_str = str(a_number)
用零到 5 位數字填充number_str
zero_filled_number = number_str.zfill(5)
print(zero_filled_number)
OUTPUT=
00123
假設您確實有一個不能作為字符串保留的整數列表並且想要創建 URL。 還假設您使用的是 Python 3.6 或更高版本,您可以使用簡單的f-string來實現這一點。
print(f"https://.../{str(parameters[i])}site={site_codes[1]:04d}")
這將填充前導零,而無需求助於 zfill。
或者,或者如果您在 3.6 以下運行 Python,這也將起作用:
print("https://.../{}site={:04d}".format(str(parameters[i]), site_codes[1]))
站點代碼為 16,以上兩者都會給你
https://.../parametersite=0016
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.