【问题标题】:String intersection in PythonPython中的字符串交集
【发布时间】:2018-07-10 07:09:41
【问题描述】:

这是我的代码:

keyinput = input() # I type 'appleandgold'

B = 'appleblue'

if keyinput in B: # Should actually be keyinput "intersects" B   
     print(keyinput) # Should print intersection

keyinput = 'appleandgold'B = 'appleblue' 的结果(打印值)应该是'apple',但我只能让它为keyinput = 'apple' 工作。

【问题讨论】:

  • how i print results为其添加代码]
  • 所以你正在寻找一种方法来找到最长的公共子串?顺便说一句,type 并没有按照你的想法去做。
  • 您的代码在语法上是错误的 (If?),包含多余的行(type 没有按照您的想法执行)并且无论如何都会失败("appleandgold" 不是in "appleblue")。
  • 代码看起来如何,我想要 IF .. IN .. statment 的结果?
  • 您需要更好地定义您的问题。你在寻找两个词的最长公共子串吗?查看此链接以获取解决方案。 bogotobogo.com/python/…

标签: python string python-3.x intersection in-operator


【解决方案1】:

您似乎在寻找最长的公共子字符串。标准库包含difflib 模块:

from difflib import SequenceMatcher

keyinput = input()  # I type "appleandgold"

B = "appleblue"

match = SequenceMatcher(a=keyinput, b=B).find_longest_match(
    0,
    len(keyinput),
    0,
    len(B),
)
print(keyinput[match.a:match.a+match.size])  # prints "apple"

【讨论】:

  • thk 这个工作现在我可以使用 (apple) 的输出通过 pymysql 从数据库中进行选择
【解决方案2】:

你可以在不导入任何模块的情况下尝试这样的事情:

s1='appleandgold'
s2='appleblue'

track=[]
for k in range(len(s1)):
    if k!=0:
        for ka in range(0,len(s1),k):
            if s1[ka:ka+k] in s2:
                track.append((len(s1[ka:ka+k]),s1[ka:ka+k]))
print(max(track)[1])

输出:

apple

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多