2017-05-18 56 views
0

这是我想要编辑的代码,但我不知道如何:的Python 3.X - 如何找到字符集的交集在两个字符串

var1= 'ABC' 
var2= 'DBC' 
match= any(x in var1 for x in var2) 
if any(x in var1 for x in var2): 
    print("var1 in var2") 
    print("The letters that are in var1 and var2 are", match) 
else: 
    print("No results.") 

当我运行的代码我获得这样的结果对我来说是无用的:

var1 in var2 
The letters that are in var1 and var2 are True 

我想要什么程序做的是:

var1 in var2 
The letters that are in var1 and var2 are BC 

如果要改变VAR1到ABD我想要的结果是:

var1 in var2 
The letters that are in var1 and var2 are BD 

P.S.我也希望它按字母顺序打印这些字母: 所以我想要的结果是The letters that are in var1 and var2 are BD,而不是The letters that are in var1 and var2 are DB

非常感谢。 您真诚。

回答

2
var1= 'ABC' 
var2= 'DBC' 
match= [x for x in var1 if x in var2] 
if match: 
    print("var1 in var2") 
    match_str = ''.join(sorted(match)) 
    print("The letters that are in var1 and var2 are %s." % match_str) 
else: 
    print("No results.") 

此打印:

var1 in var2 
The letters that are in var1 and var2 are BC. 

基本上我用一个列表解析找到哪些元素是相同的,检查列表是否非空与if match,使用sorted功能排序,然后将每个元素与''.join连接成单个字符串(由于我们不需要字母之间的空格,因此将空字符串''加入)。

然后,为了避免在输出中有逗号,我使用%格式语法将排序后的字符插入到输出句子中。

+0

我得到了 '为' –

+0

对不起固定错字3线无效的语法。 –

+0

非常感谢。真的帮助了我。 –

1

你也可以使用set算术来做到这一点。

>>> var1 = 'ABC' 
>>> var2 = 'DBC' 
>>> ''.join(set(var1).intersection(set(var2))) 
'CB' 

更改var1

>>> var1 = 'ABD' 
>>> ''.join(set(var1).intersection(set(var2))) 
'BD' 
相关问题