我有一个
形式的网址模板https://farm{farm-id}.staticflickr.com/{server-id}/{photo-id}_{secret}.jpg
我检索了以下字段,这些记录大约有1000000个。检索下面的记录后
farm-id: 1
server-id: 2
photo-id: 1418878
secret: 1e92283336
size: m
我需要构建此网址
https://farm1.staticflickr.com/2/1418878_1e92283336_m.jpg
我正在考虑一些方法,我应该为这个构建字典吗?
答案 0 :(得分:1)
您可以尝试使用 CASE WHEN ( date_column !=' '
AND ( ISDATE(date_column )=0
OR ( ISDATE(date_column )=1
AND ( CHARINDEX(' ',date_column ,0) <>3
OR ( CHARINDEX(' ',date_column ,4) <>7
OR (LEN(date_column) <>11
)
)
) THEN 1
ELSE 0 END)
:
str.format(*args, **kwargs)
格式字符串中包含fmt = 'https://farm{farm-id}.staticflickr.com/{server-id}/{photo-id}_{secret}.jpg'
values = { 'farm-id': '1', 'server-id': 2, 'photo-id': '1418878', 'secret': '1e92283336', 'size': 'm' }
fmt.format(**values)
和{
的所有内容都称为“替换字段”。它可以与}
一起用于此类格式化。更多信息here。
答案 1 :(得分:0)
字典可能是你最好的选择。作为替代方案,请查看named tuples。
Data = namedtuple('farm-id', 'server-id', 'photo-id', 'secret', 'size')
d = Data(1 ,2 ,1418878, 1e92283336, m)
答案 2 :(得分:0)
我设法从文件中提取数据,现在我有两件事,一组固定的键和一组不同的值。
键
['farm-id','server-id','photo-id','secret','originalformat','originalsecret']
值
['3','2287','2109698205','20fbbcc947','jpg','7a57411545']
['3','2063','2172469872','8ddb85aedd','jpg','e12b952909']
['2','1079','830593398','9ddca27ab0','jpg','bb91586e56']
['3','2371','2226919732','248f23c5ff','jpg','29f35fb0ca']
['2','1014','798067744','4f043d2ea6','jpg','d739cc870b']
是否有更智能的方法将这两个列表合并到字典中,之后我可以使用创建URL所需的格式
答案 3 :(得分:0)
首先,如果您的数据采用您指定的格式,则应确保可以解释1e92283336
等数字的解释方式与您的预期不同。例如json
>>> json.loads('{"secret" : 1e92283336, "server_id" : 2, "farm_id": 1, "size" : "m"}')
{u'secret': inf, u'farm_id': 1, u'server_id': 2, u'size': u'm'}
将字段成功导入字典后,有多种方法可以使用字符串插值和格式化。除了上一个答案中提到的str.format
说明符之外,您可以使用下面的传统%
样式格式(请注意右括号后的格式说明符s
)
>>> url = "https://farm%(farm-id)s.staticflickr.com/%(server-id)s/%(photo-id)s_%(secret)s.jpg"
>>> print url % {'secret': '1e92283336', 'server-id': '2', 'farm-id': '1', 'size': 'm', 'photo-id' : '1418878'}
https://farm1.staticflickr.com/2/1418878_1e92283336.jpg
您还可以使用Template Strings使用Template
模块中的string
类。这对bash / perl程序员来说更为熟悉。模板字符串的形式如下。占位符(在可选大括号内)必须是有效的python identifiers,因此它不能包含-
等字符。第一个非标识符字符终止占位符。使用safe_substitute
方法,如果缺少任何占位符值,它将放置原始占位符,而不是引发键错误。
>>> from string import Template
>>> s = Template("https://farm${farm_id}.staticflickr.com/${server_id}/${photo_id}_${secret}.jpg")
>>> s.substitute({'secret': '1e92283336', 'server_id': '2', 'farm_id': '1', 'size': 'm', 'photo_id' : '1418878'})
'https://farm1.staticflickr.com/2/1418878_1e92283336.jpg'
>>> s.safe_substitute({'server_id': '2', 'farm_id': '1', 'size': 'm', 'photo_id' : '1418878'})
'https://farm1.staticflickr.com/2/1418878_${secret}.jpg'