首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换与正则表达式模式匹配的字符串?

如何替换与正则表达式模式匹配的字符串?
EN

Stack Overflow用户
提问于 2017-06-05 15:38:29
回答 3查看 60关注 0票数 0

我有一张有数字的名单。我想提取所有连续数字的数字,比如444,888,1111等等。下面使用regex的python代码正按照我所希望的方式工作。

代码语言:javascript
复制
import re 
numbers = ['44444', '123', '444', '454', '76587', '888', '9090', '1111', '321', '4321', '4563', '3333', '543', '765', '4567', '555', '99999', '11211','11']
conList = [] 

for num in numbers:
  if re.search(r'^(\d)\1+$',num):
    conList.append(num)

print('conList :',conList) 

结果:

代码语言:javascript
复制
conList : ['44444', '444', '888', '1111', '3333', '555', '99999', '11']

现在,我试图在不使用regex模式的情况下实现相同的结果。如何用一些python代码替换regex模式?(我尝试这个只是为了教育目的。如果我有答案的话,我会张贴我的答案。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-05 15:41:33

这是我解决这个问题的尝试。

代码语言:javascript
复制
for num in numbers:
  if len(set(num)) == 1 and len(num) >1:
    conList.append(num)
print('conList :',conList)

或者,使用列表理解

代码语言:javascript
复制
conList = [ num for num in numbers if len(num) > 1 and len(set(num)) == 1 ]
print('conList : %s', conList)

或者,使用过滤器

代码语言:javascript
复制
conList = filter(lambda x: len(x) > 1 and len(set(x)) == 1, numbers)
票数 2
EN

Stack Overflow用户

发布于 2017-06-05 15:45:21

使用节奏曲和快速的方法来理解列表:

代码语言:javascript
复制
[i for i in numbers if len(set(i)) == 1]
票数 0
EN

Stack Overflow用户

发布于 2017-06-05 15:45:43

您可以使用以下列表理解在一行中完成此操作:

代码语言:javascript
复制
numbers = ['44444', '123', '444', '454', '76587', '888', '9090', '1111', '321', '4321', '4563', '3333', '543', '765', '4567',
     '555', '99999', '11211', '11']
conList = [x for x in numbers if x.count(x[0]) == len(x)]
print conList

产出:

代码语言:javascript
复制
['44444', '444', '888', '1111', '3333', '555', '99999', '11']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44372524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档