鱼C论坛

 找回密码
 立即注册
查看: 2435|回复: 15

[已解决]format 的用法

[复制链接]
发表于 2020-11-13 15:14:37 | 显示全部楼层 |阅读模式

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

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

x
我在B站搜了好几个关于format的用法的视频,讲的都是 在字符串用{} 占位,然后在format()设参数,传进字符串。即 xxxx{} , zzz{}, format('hello', 'peter')类似这种方法。--这个我看懂了。

下面的截图我在看的爬虫视频教程,下面用红框框圈起来的format用法,前面也没有字符串, 也没有占位的{},这个用法到底是咋用?

有大神能讲讲这个用法吗? 或者说明一下关键字啥的,我自己去搜索。

0043.png



最佳答案
2020-11-13 18:38:53
本帖最后由 Twilight6 于 2020-11-13 18:40 编辑
青松100 发表于 2020-11-13 17:19
谢谢版主大大。我看了那篇帖子了,和我在B站的视频看的讲得差不多,都是讲的字符串的拼接。即:

前面 ...




这里的  format 应该是将参数的值转化为字符串,即:
print(format([123,15,55]))
print(type(format([123,15,55])))   # 参数填写列表
print(type(format((1,2,3))))          # 参数填写元组 

输出结果:
[123, 15, 55]
<class 'str'>
<class 'str'>

很少使用这个,看到你这个问题才发现还能这样的。。。去查了下也查不到什么猫腻

只能建议用正常模板 '{}'.format() 这样啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-13 16:20:56 | 显示全部楼层


没关系的哈,因为从你图中可以初步判断你下面代码是 self.url 实例变量,而上面的变量是局部变量 url 两者无关

格式化可以看看这个文章,很详细:

实用干货:字符串格式化
https://fishc.com.cn/thread-145610-1-1.html


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

使用道具 举报

发表于 2020-11-13 16:35:05 | 显示全部楼层
url里面的百分号是特殊编码 可以用urllib库编码和解码
下面这个字符串%百分号虽然叫格式化输出 但是本质是字符串的取余运算 定义在字符串的取余运算的魔术方法上
和format无关 字符串的format方法是format方法 而内置format函数是各个类的__format__魔术方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 16:38:34 | 显示全部楼层
url编码:
from urllib.parse import parse_qs
print(parse_qs(%d)) #解码后是这个符号:{}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 16:40:37 | 显示全部楼层
没仔细看你的 你这个地方这个是有关系的 是直接取余的  我说的是浏览器地址栏对中文和符号的处理

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
青松100 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-11-13 17:19:49 | 显示全部楼层
Twilight6 发表于 2020-11-13 16:20
没关系的哈,因为从你图中可以初步判断你下面代码是 self.url 实例变量,而上面的变量是局部变量 url  ...

谢谢版主大大。我看了那篇帖子了,和我在B站的视频看的讲得差不多,都是讲的字符串的拼接。即:

前面是字符串,字符串里面有{},后面是format()带参数的,然后把参数传到字符串里,这样完成拼接。


但是new_url = format()前面也没有字符串,也没有占位符,它是如何完成拼接的?


我这个是讲的是用通用的URL模版,来创造新的URL地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 17:21:18 | 显示全部楼层
kogawananari 发表于 2020-11-13 16:40
没仔细看你的 你这个地方这个是有关系的 是直接取余的  我说的是浏览器地址栏对中文和符号的处理


谢谢大佬回复。

我在学习的视频中老师讲的是要拼接URL地址的字符串。你说的取余是啥意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 18:38:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-11-13 18:40 编辑
青松100 发表于 2020-11-13 17:19
谢谢版主大大。我看了那篇帖子了,和我在B站的视频看的讲得差不多,都是讲的字符串的拼接。即:

前面 ...




这里的  format 应该是将参数的值转化为字符串,即:
print(format([123,15,55]))
print(type(format([123,15,55])))   # 参数填写列表
print(type(format((1,2,3))))          # 参数填写元组 

输出结果:
[123, 15, 55]
<class 'str'>
<class 'str'>

很少使用这个,看到你这个问题才发现还能这样的。。。去查了下也查不到什么猫腻

只能建议用正常模板 '{}'.format() 这样啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 21:17:15 | 显示全部楼层
Twilight6 发表于 2020-11-13 18:38
这里的  format 应该是将参数的值转化为字符串,即:

非常感谢您和另一个大神的回复和帮助。

我搞清楚了。%是一个替换符,这是老版的format的格式,别人叫我不要用了。

也许是我正在学习的视频的老师较早入行,所以他的代码还是用老式的。

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

使用道具 举报

发表于 2020-11-14 08:09:47 | 显示全部楼层
字符串的format和内置format不一样的 害 这个有点复杂
>>> import datetime
>>> night = datetime.time(22,30,tzinfo=datetime.timezone(
...     datetime.timedelta(hours=8), name = '北京'))
>>> format(night,'现在是%Z时间%H点%M分')
'现在是北京时间22点30分'
>>> '现在是{:%Z}时间{:%H}点{:%M}分'.format(night,night,night)
'现在是北京时间22点30分'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 08:16:56 | 显示全部楼层
青松100 发表于 2020-11-13 17:21
谢谢大佬回复。

我在学习的视频中老师讲的是要拼接URL地址的字符串。你说的取余是啥意思?

取余是 % 运算符 也就是operator.mod(a, b)
>>> import operator
>>> a = 5
>>> b = 3
>>> operator.mod(a, b)
2
>>> a = '11%s11'
>>> b = 1
>>> operator.mod(a, b)
'11111'
老版本的这个格式化是写在取余运算里

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
青松100 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-11-14 16:21:17 | 显示全部楼层
@Twilight6

版主大大,能不能麻烦审核一下,我新发的一个帖---        爬取BOSS的岗位名称和详情页的岗位描述

别的2个需要审核的,您不用理,也可以删掉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 19:15:46 | 显示全部楼层
青松100 发表于 2020-11-14 16:21
@Twilight6

版主大大,能不能麻烦审核一下,我新发的一个帖---        爬取BOSS的岗位名称和详情页的岗位描 ...



没艾特成功我,没发现...

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

使用道具 举报

 楼主| 发表于 2020-11-14 19:24:59 | 显示全部楼层
Twilight6 发表于 2020-11-14 19:15
没艾特成功我,没发现...


谢谢关注。后来我借别人的楼,引用您的帖子,您回复了--帮我圈了不二版主。

我想以后我得用引用帖子,这样一定能成功。

也许是我的权限太低了,不能圈人。

另外两个被审核的帖子,我请求删掉,有个热心的大神在站务教我怎么删掉了,我搞好了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 19:27:40 | 显示全部楼层
青松100 发表于 2020-11-14 19:24
谢谢关注。后来我借别人的楼,引用您的帖子,您回复了--帮我圈了不二版主。

我想以后我得用引用帖 ...



OK , 有好友权限才能艾特哈~

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

使用道具 举报

 楼主| 发表于 2020-11-14 21:39:08 | 显示全部楼层
Twilight6 发表于 2020-11-14 19:27
OK , 有好友权限才能艾特哈~

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 22:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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