找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 43716|回复: 15

[问题求助] python这个代码如何写?

[复制链接]
发表于 2020-5-4 00:32:27 | 显示全部楼层 |阅读模式
AB[rb][qb][pc][oc][nd][ne][nf][og][oh][qh][rg][sf][ri][se][sb]
AW[qg][pg][of][pe][pd][qc][rc][sc][re][rf]

要求得到这个结果
rb,qb,pc,oc,nd,ne,nf,og,oh,qh,rg,sf,ri,se,sb   // 打印第一行
qg,pg,of,pe,pd,qc,rc,sc,re,rf                  // 打印第二行


按照']['进行分割的话,前面后对不上啊?
发表于 2020-5-4 06:46:41 | 显示全部楼层
回复 1# netdzb


    正则表达式
  1. re.split(text,r'[[]]')
复制代码
 楼主| 发表于 2020-5-4 07:51:24 | 显示全部楼层
回复 2# wujunkai


这个表达式是什么意思?
发表于 2020-5-4 08:01:14 | 显示全部楼层
使用 Raku(之前叫 Perl 6):

  1. .comb(/ '[' <( \w+ )> ']' /).join(',').say for $=finish.lines;

  2. =finish
  3. AB[rb][qb][pc][oc][nd][ne][nf][og][oh][qh][rg][sf][ri][se][sb]
  4. AW[qg][pg][of][pe][pd][qc][rc][sc][re][rf]
复制代码
 楼主| 发表于 2020-5-4 08:17:27 | 显示全部楼层
回复 4# sxw

comb是一个模块吗?
代码能否解释一下,谢谢!
 楼主| 发表于 2020-5-4 08:20:29 | 显示全部楼层
回复 4# sxw


<( \w+ )> 这个表示什么意思?
发表于 2020-5-4 08:21:50 | 显示全部楼层
python3.x
  1. import re
  2. str = """AB[rb][qb][pc][oc][nd][ne][nf][og][oh][qh][rg][sf][ri][se][sb]
  3. AW[qg][pg][of][pe][pd][qc][rc][sc][re][rf]"""
  4. for i in str.split('\n'):
  5.     s = re.findall("\[(.*?)\]", i)
  6.     print(','.join(s))
复制代码

评分

参与人数 1技术 +1 收起 理由
netdzb + 1 乐于助人

查看全部评分

 楼主| 发表于 2020-5-4 08:30:14 | 显示全部楼层
回复 7# ivor


[] 里面是a-s的小写字母,如果超越范围就报错退出。
该怎么改?
发表于 2020-5-4 08:53:51 | 显示全部楼层
本帖最后由 ivor 于 2020-5-4 09:10 编辑
  1. import re

  2. str = """AB[rb][qb][pc][oc][nd][ne][nf][og][oh][qh][rg][sf][ri][se][sb]
  3. AW[qg][pg][of][pe][pd][qc][rc][sc][re][rf]"""
  4. for i in str.split('\n'):
  5.     if (re.search("\[[a-s]*[t-z]+[a-s]*\]",i)): #检测到t-z字母则抛出UserWarning异常
  6.         raise UserWarning
  7.     s = re.findall("\[([a-s]+)\]", i)
  8.     print(','.join(s))
复制代码
发表于 2020-5-4 21:31:14 | 显示全部楼层
回复 5# netdzb


    comb 是一个函数, 接收一个正则表达式, 会过滤下来所有匹配的字符串
发表于 2020-5-4 21:32:27 | 显示全部楼层
回复 6# netdzb


    <( 表示匹配的开始, )> 表示匹配的结束。合起来表示 ,只有在 <(  和  )> 之间的字符串才会保留下来。
 楼主| 发表于 2020-5-5 04:12:17 | 显示全部楼层
回复 11# sxw


   
\w+表示什么? 是表示小写字母w以后的字母吗?
发表于 2020-5-5 12:18:44 | 显示全部楼层
回复 12# netdzb


    我还是建议你先系统地学完正则表达式,再来问
 楼主| 发表于 2020-5-5 13:20:53 | 显示全部楼层
回复 13# wujunkai

他贴的是perl关系的正则,和python的规则不一样。
发表于 2020-5-5 21:55:45 | 显示全部楼层
本帖最后由 wujunkai 于 2020-5-5 22:25 编辑

回复 14# netdzb


    可能在操作细节上会有出入,但\w和+的含义应该是不会变的
https://www.cnblogs.com/tina-python/p/5508402.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:11 , Processed in 0.023621 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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