鱼C论坛

 找回密码
 立即注册
查看: 1526|回复: 5

[已解决]format的用法

[复制链接]
发表于 2020-8-28 17:03:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
url = 'qiushibaike(dot)coOOOO5m/pic/page/%d/?s=5184961'
    for pageNum in range(1,3):
        #对应页码的url
        new_url = format(url%pageNum)

上面的几行代码是某爬虫视频的教程。(因为发的代码如果包含外链,很容易被审核,挂起来,所以我把下面代码中的URL 地址改掉。“…/pic”前面是糗图百科的网址。)

这几行代码,是视频老师在讲解如何爬取糗图百科的分页。

他把/pic/page/2/?s=5184961 中的2 (代表当前的网页的第2页),改为 %d  做为一个变量,  这样的话用format 就可以用for 来循环所有的糗图页码。


1、我在B站看了format的一些用法,好象替换要用{}, 为什么上面的代码不需要用{}呢?

2、我可不可以这样写:

pic/page/%{}/?s=5184961'
……
new_url = format(pageNum)
3、怎么搜索视频中老师使用这个format的用法的知识点?我在B站看了40分钟左右的视频,那些UP主也没有提到这个用法。应该搜什么关键字?


PS--小白如果表达词不达意,请耐心指教。我在哪个地方具体说得不清楚,我可以重新表达清楚一点。




最佳答案
2020-8-28 17:12:40
第一个问题:
url = 'qiushibaike(dot)coOOOO5m/pic/page/%d/?s=5184961'
    for pageNum in range(1,3):
        #对应页码的url
        new_url = format(url%pageNum)
这是老版本python2.6之前的格式化方法,参见
https://www.cnblogs.com/fat39/p/7159881.html#tag1
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
第二个问题:  不可以这样写,正确写法如下
url = 'qiushibaike(dot)coOOOO5m/pic/page/{0}/?s=5184961'
    for pageNum in range(1,3):
        #对应页码的url
        new_url = url.format(pageNum)
第三个问题,资料参见
https://www.runoob.com/python/att-string-format.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-28 17:08:31 | 显示全部楼层
https://mp.weixin.qq.com/s/RIh_NipH7KN_F9k0RSROBg
看下这篇文章吧深度对比Python的3种“字符串格式化”方法

更加喜欢用f-string的用法,更方便点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-28 17:12:40 | 显示全部楼层    本楼为最佳答案   
第一个问题:
url = 'qiushibaike(dot)coOOOO5m/pic/page/%d/?s=5184961'
    for pageNum in range(1,3):
        #对应页码的url
        new_url = format(url%pageNum)
这是老版本python2.6之前的格式化方法,参见
https://www.cnblogs.com/fat39/p/7159881.html#tag1
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
第二个问题:  不可以这样写,正确写法如下
url = 'qiushibaike(dot)coOOOO5m/pic/page/{0}/?s=5184961'
    for pageNum in range(1,3):
        #对应页码的url
        new_url = url.format(pageNum)
第三个问题,资料参见
https://www.runoob.com/python/att-string-format.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-28 17:17:07 | 显示全部楼层
本帖最后由 sunrise085 于 2020-8-28 17:18 编辑

此format非彼format
这是个独立函数,而你所说的是字符串str的函数

这种写法现在完全可以直接将format去掉,结果是一样的
url = 'qiushibaike(dot)coOOOO5m/pic/page/%d/?s=5184961'
for pageNum in range(1,3):
    #对应页码的url
    new_url = url%pageNum
    print(new_url)

你的程序改写成那种字符串的format函数的写法如下:url中的%d改为花括号,然后for循环中的那一句改为str的函数format
url = 'qiushibaike(dot)coOOOO5m/pic/page/{}/?s=5184961'
for pageNum in range(1,3):
    #对应页码的url
    new_url = url.format(pageNum)
    print(new_url)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-28 17:31:23 | 显示全部楼层
1q23w31 发表于 2020-8-28 17:12
第一个问题:

这是老版本python2.6之前的格式化方法,参见

万分谢谢楼中三位大神的帮助。小白零基础,现在只是处于临摹的阶段,先想搞清楚,老师写的代码就行了,这是我最关心的。(哪怕过时也没关系)

你们三位的回答都对我有非常帮助,令我选择最佳回答左右为难。

我选择1q23w31,因为他相对一对一地回答我的问题了。不过我还没仔细阅读他的答案的内容,担心万一有更多的大神回复,可是我不能选择他们,真是万分过意不去。

1q23w31大神,如果我看了您的答案的那些链接,还不懂的话,希望到时您能再次伸出援助之手。

最后,再次感谢三位的热心帮助!!·!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 21:07:25 | 显示全部楼层
本帖最后由 青松100 于 2020-9-1 21:08 编辑


url = 'qiushibaike(dot)coOOOO5m/pic/page%d/?s=5184961'
    for pageNum in range(1,3):
        #对应页码的url
        new_url = format(url%pageNum)



大神,我明白%d 是十进制。


forumat(url%pageNum)这里的url前面不用加逗号, 就是要被替换的字符串; 而后面是要被替换的内容?

您给我的两个链接我都看了,好象没有老式的用法。万一没看清,您能不能把具体的用法或关键字复制过来,这样我可以再找一下。

PS---不好意思,这几天有事,所以回帖晚了。




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 20:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表