2014-12-03 25 views
1

所以我是相當新的python,只有自學這種特定的語言,但我已經打了一些障礙。字符串建設與正則表達式

我想要做的是建立一個字符串,其中可以是任何長度或模式的數字。例如:

"Data_image_%s.%d" %(myStr, r'[0-9]+') 
    # Well, this won't actually work since %d is expecting an integer, 
    # but you get the idea. 

當我這樣做,我回去

Data_image_picture.[0-9]+.png 

的最終目標是創建一個字符串,倒像是:Data_image_picture.1234567.png

任何想法如何,我會去修正這個?

編輯:我想要做的是從我的公司網站上拍攝圖片,但圖片網址是動態的,取決於誰將圖片加載到瀏覽器。所以格式通常是「data_image_Joe_session#id.png

編輯2:我認爲我一直在錯誤地解決這個問題,我可能需要解析數據來確定我需要的字符串模式,而不是中創建一個一刀切的字符串就像我一直做的事情。

謝謝您的時間,並幫助

+0

你想批量上創建形狀字符串?像從'Data_image_picture.0.png'到'Data_image_picture.9223372036854775807.png'? – BorrajaX 2014-12-03 22:41:27

+0

我想要做的是從我的公司網站上拍攝圖像,但圖像url是動態的,取決於誰將圖像加載到瀏覽器的人員和時間。所以格式通常是「data_image_Joe_session#id。png – Riv3r 2014-12-03 22:48:35

+0

您是否在嘗試生成'Data_image_picture ... blahblah'之前知道'id'?我的意思是...你會知道你需要添加什麼號碼嗎?如果是這樣,@TanveerAlam或@Hackaholic在下面發佈的應該是好的。 – BorrajaX 2014-12-03 22:50:44

回答

1

正則表達式用於匹配,而不是建築字符串或建築物的隨機數。

建立一個隨機數字串0和9999999你可以這樣做:

from random import random 

myStr = "Data_image_picture." + str(int(random()*10000000)) + ".png" 
1

%d用作placeholder對於數字或十進制值。它們是format specifiers。當你想把你的Python表達式的值包含到字符串中時使用它們,並強制執行特定的格式。

所以%d接受整數,但把它放在字符串中。

>>> image_name = "picture" 
>>> image_number = 1234567 
>>> "Data_image_%s.%d.jpg"%(image_name,image_number) 
'Data_image_picture.1234567.jpg' 
#OR 
>>> "Data_image_{}.{}.jpg".format(image_name,image_number) 
'Data_image_picture.1234567.jpg' 

您可檢查內部字符串格式化的號碼類型:

>>> type(image_number) 
<type 'int'> 

您可以採取任何lenght的數量。

>>> image_number = 123456789234567 
>>> image_name = "picture" 
>>> "Data_image_%s.%d.jpg"%(image_name,image_number) 
'Data_image_picture.123456789234567.jpg' 
>>> type(image_number) 
<type 'long'> 

這是在Python 2中,但在Python 3中整數可以容納長數字。

在Python3:

image_number = 123456789234567 
image_name = "picture" 
print ("Data_image_%s.%d.jpg"%(image_name,image_number)) 
print (type(image_number)) 

結果:

Data_image_picture.123456789234567.jpg 
<class 'int'> 
+0

我認爲我一直在錯誤地解決這個問題,我可能需要解析數據來確定我需要的字符串模式。 – Riv3r 2014-12-03 22:53:45

+0

@ Riv3r是的,我認爲你只是感到困惑,因爲你認爲你正在嘗試包含字符串整數。 – 2014-12-03 23:04:28