Python: 複数の文字列の共通する部分文字列をとりだす
今日は Python。何がしたいかというと、要するに ‘abcde’、‘abcxz’、‘ab-op’ という文字列から、共通する部分文字列(ただし先頭から) ‘ab’ をとりだしたい。
探せばいいのがあるかと思ったけど、見つからないので書いた。こんなふうになった。
import itertools
def common_substring(*strings):
def same_all(*args):
piv = args[0]
return all([piv == e for e in args[1:]])
return ''.join([s[0] for s in itertools.takewhile(lambda x: same_all(*x), zip(*strings))])
試してみよう。
>>> s1 = 'abcde'
>>> s2 = 'abcyz'
>>> s3 = 'ab-op'
>>> common_substring(s1, s2, s3)
'ab'
日本語でもいける。
>>> common_substring('こんにちは', 'こんばんは', 'こんちは')
'こん'
可変長引数をとるので、文字列は何個あってもいい。
