鱼C论坛

 找回密码
 立即注册
查看: 1188|回复: 17

[已解决]请问这两个表达式就多个括号为什么内容不同,最后的引号是字符串的引号吗?

[复制链接]
发表于 2020-6-10 11:26:17 | 显示全部楼层 |阅读模式

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

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

x
请问这两个表达式就多个括号为什么内容不同,最后的引号是字符串的引号吗?
最佳答案
2020-6-10 11:35:37
请问这两个表达式就多个括号为什么内容不同?


这里加不加括号就是 是否保留匹配项  的问题,第一个是不保留匹配项

而第二个是匹配保留的,所以第二个把所有符合也切割并保留下来了

最后的引号是字符串的引号吗?

对的,最后一个元素就是空字符串的意思
123212.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-10 11:35:37 | 显示全部楼层    本楼为最佳答案   
请问这两个表达式就多个括号为什么内容不同?


这里加不加括号就是 是否保留匹配项  的问题,第一个是不保留匹配项

而第二个是匹配保留的,所以第二个把所有符合也切割并保留下来了

最后的引号是字符串的引号吗?

对的,最后一个元素就是空字符串的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 11:45:58 | 显示全部楼层
Twilight6 发表于 2020-6-10 11:35
这里加不加括号就是 是否保留匹配项  的问题,第一个是不保留匹配项

而第二个是匹配保留的,所以第 ...

匹配项是什么意思, 我基础不大好。还有如果我在字符串的前面再加上一个空格,再分割的话除了加的空格,还多出来一个空的字符串是为什么呢 ?
>>> re.split('(\W+)', ' runoob, runoob, runoob.')
['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', '']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 11:49:49 | 显示全部楼层
白白白白丶白 发表于 2020-6-10 11:45
匹配项是什么意思, 我基础不大好。还有如果我在字符串的前面再加上一个空格,再分割的话除了 ...

简单理解就是 保不保留切割后剩余的 字符串

你加个空格,匹配到的都是字母进行切割,因为你加了括号,就将切割后剩余的保留下拉,所以你前面会多个空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 11:53:41 | 显示全部楼层
Twilight6 发表于 2020-6-10 11:49
简单理解就是 保不保留切割后剩余的 字符串

你加个空格,匹配到的都是字母进行切割,因为你加了括号, ...


谢谢,匹配项理解了,为什么加空格后分割出来的列表里是两个空字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 12:00:41 | 显示全部楼层
白白白白丶白 发表于 2020-6-10 11:53
谢谢,匹配项理解了,为什么加空格后分割出来的列表里是两个空字符串

好像是因为你是 \W 大写的原因  才发现你是大写的,大写的是匹配非字母数字以及下划线
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 13:38:25 From FishC Mobile | 显示全部楼层
那也不会出现两个字符串啊,把里面的字母符号都匹配出来不也是只剩下一个字符串吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 13:39:12 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-6-10 12:00
好像是因为你是 \W 大写的原因  才发现你是大写的,大写的是匹配非字母数字以及下划线

那也不会出现两个字符串啊,把里面的字母符号都匹配出来不也是只剩下一个字符串吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 13:52:36 | 显示全部楼层
白白白白丶白 发表于 2020-6-10 13:39
那也不会出现两个字符串啊,把里面的字母符号都匹配出来不也是只剩下一个字符串吗



就是因为切割的是非字母丫,匹配到空格 将空格切割掉必须 头先切割然后切割尾巴  但是空格前面没东西了

但是空格的头依旧要切割,导致出现了一个空字符串,这和字符串切割是一个道理,举个例子:
temp = 'c  c'.split('c')
print(temp)

你可以测试下字符串切割的情况

输出结果
>>> ['', '  ', '']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 14:07:27 From FishC Mobile | 显示全部楼层
袄,这就是split函数本身的理解了。我去看看split定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 18:39:23 | 显示全部楼层
Twilight6 发表于 2020-6-10 13:52
就是因为切割的是非字母丫,匹配到空格 将空格切割掉必须 头先切割然后切割尾巴  但是空格前面没东西 ...

问题又来了,刚才试了一下,小写w打出来的就
不一样的结果,
没空格    空字符串在列表的头上
re.split(r'(\w+)', 'runboo, runboo, runboo.')
['', 'runboo', ', ', 'runboo', ', ', 'runboo', '.']
加空格 后在列表的结尾也没有多出来个空字符串
 re.split(r'(\w+)', ' runboo, runboo, runboo.')
[' ', 'runboo', ', ', 'runboo', ', ', 'runboo', '.']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 18:43:36 | 显示全部楼层
白白白白丶白 发表于 2020-6-10 18:39
问题又来了,刚才试了一下,小写w打出来的就
不一样的结果,
没空格    空字符串在列表的头上


小写 和大写是两个匹配东西呀....哎哟

小写 匹配字母和数字下划线  而大写匹配非字母和数字下划线
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 18:47:20 | 显示全部楼层
白白白白丶白 发表于 2020-6-10 18:39
问题又来了,刚才试了一下,小写w打出来的就
不一样的结果,
没空格    空字符串在列表的头上

大写匹配的到空格所以前面有个空字符串呀,小写匹配不到空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 19:36:16 | 显示全部楼层
Twilight6 发表于 2020-6-10 18:47
大写匹配的到空格所以前面有个空字符串呀,小写匹配不到空格

你看我发的代码,都是小写的,第一个字符串前面没打空格的,所以列表里第一个元素是个空字符串,但是第二个也是小写,字符串前面打了一个空格,列表第一个元素就是空格了,空字符串就不见了,\w是匹配字母数字下划线,但是这里为什么把空格匹配出来了,因为加了括号的缘故吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 20:16:58 | 显示全部楼层
白白白白丶白 发表于 2020-6-10 19:36
你看我发的代码,都是小写的,第一个字符串前面没打空格的,所以列表里第一个元素是个空字符串,但是第二 ...

奥对,你前面说加括号保留了切割后剩余的东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-11 17:21:07 | 显示全部楼层
白白白白丶白 发表于 2020-6-10 20:16
奥对,你前面说加括号保留了切割后剩余的东西

昨天晚上没看到你的消息 抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 15:29:56 | 显示全部楼层
Twilight6 发表于 2020-6-11 17:21
昨天晚上没看到你的消息 抱歉

那我说的对不对,是不是因为加了括号的原因,保留了切割后的切割后剩余的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 15:38:33 | 显示全部楼层
白白白白丶白 发表于 2020-6-12 15:29
那我说的对不对,是不是因为加了括号的原因,保留了切割后的切割后剩余的

嗯吧,应该没毛病
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 17:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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