今日は 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('こんにちは', 'こんばんは', 'こんちは')
'こん'
可変長引数をとるので、文字列は何個あってもいい。