Python 从集合数据类型中提取匹配表达式

Python 从集合数据类型中提取匹配表达式,python,python-2.7,Python,Python 2.7,我需要处理一组数据类型并找到所有匹配的模式。 我有一个工作代码: d=SET type input fin_list=[] for i in d: mat = re.findall(r"\w+\.\w+",str(i)) if mat: fin_list.append(' '.join(mat)) print ','.join(fin_list) e、 g: 请建议一种高效的python方法。这是另一种使用str.join的方法 演示: import re d

我需要处理一组数据类型并找到所有匹配的模式。 我有一个工作代码:

d=SET type input
fin_list=[]
for i in d:
    mat = re.findall(r"\w+\.\w+",str(i))
    if mat:
        fin_list.append(' '.join(mat))

print ','.join(fin_list)
e、 g:


请建议一种高效的python方法。

这是另一种使用
str.join
的方法

演示:

import re
d = set(['databasename.tablename', 'hello', 'fact.table'])
print( ", ".join(re.findall(r"\w+\.\w+", "|".join(d))) )
databasename.tablename, fact.table
输出:

import re
d = set(['databasename.tablename', 'hello', 'fact.table'])
print( ", ".join(re.findall(r"\w+\.\w+", "|".join(d))) )
databasename.tablename, fact.table

我只编译一次正则表达式模式,并使用列表:

import re

s = set(['databasename.tablename', 'hello', 'fact.table'])
rx = re.compile(r"\w+\.\w+")
fin_list = [" ".join(rx.findall(i)) for i in s if rx.search(i)]

print fin_list
如预期所示:

['databasename.tablename', 'fact.table']

我不知道你为什么在append中使用join

简单的一行就可以了

d=SET type input
output = [element for element in d if "." in element] # this line if you want all the elements of set having '.' inside.
Time taken : 0:00:00.005000
output = [element for element in d if "." in element and element.count(".") == 1] # this if you want 1 '.' inside
Time taken: 0:00:00.007000
output = [element for element in d if "." in element and element.count(".") == 1 and not element.startswith(".")] # this if you dont want elements starting with '.'
print(",".join(output))
Time taken: 0:00:00.007000

Your code: 0:00:00.012000

您当前的方式很好,为什么需要更改它?我是python的初学者。我在努力避免输入错误。