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