所以我对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 :(得分:1)
正则表达式用于匹配,而不是用于构建字符串或构建随机数。
要构建一个0到9999999之间随机数的字符串,您可以执行以下操作:
from random import random
myStr = "Data_image_picture." + str(int(random()*10000000)) + ".png"
答案 1 :(得分: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'>
您可以获取任何长度的数量。
>>> 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'>