[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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                  // 打印第二行


按照']['进行分割的话,前面后对不上啊?

开始学Python了!
  1. >>> import re
  2. >>> a
  3. 'AB[rb][qb][pc][oc][nd][ne][nf][og][oh][qh][rg][sf][ri][se][sb]'
  4. >>> b=re.findall('[a-z]{2}',a)
  5. >>> b
  6. ['rb', 'qb', 'pc', 'oc', 'nd', 'ne', 'nf', 'og', 'oh', 'qh', 'rg', 'sf', 'ri', 'se', 'sb']
  7. >>> ''.join(b)
  8. 'rbqbpcocndnenfogohqhrgsfrisesb'
  9. >>>
复制代码

TOP

本帖最后由 wujunkai 于 2020-5-5 22:25 编辑

回复 14# netdzb


    可能在操作细节上会有出入,但\w和+的含义应该是不会变的
https://www.cnblogs.com/tina-python/p/5508402.html

TOP

回复 13# wujunkai

他贴的是perl关系的正则,和python的规则不一样。

TOP

回复 12# netdzb


    我还是建议你先系统地学完正则表达式,再来问

TOP

回复 11# sxw


   
\w+表示什么? 是表示小写字母w以后的字母吗?

TOP

回复 6# netdzb


    <( 表示匹配的开始, )> 表示匹配的结束。合起来表示 ,只有在 <(  和  )> 之间的字符串才会保留下来。

TOP

回复 5# netdzb


    comb 是一个函数, 接收一个正则表达式, 会过滤下来所有匹配的字符串

TOP

本帖最后由 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))
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 7# ivor


[] 里面是a-s的小写字母,如果超越范围就报错退出。
该怎么改?

TOP

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

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 4# sxw


<( \w+ )> 这个表示什么意思?

TOP

回复 4# sxw

comb是一个模块吗?
代码能否解释一下,谢谢!

TOP

使用 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]
复制代码

TOP

回复 2# wujunkai


这个表达式是什么意思?

TOP

返回列表