【问题标题】:Cannot compare strings Python无法比较字符串Python
【发布时间】:2022-01-16 05:14:21
【问题描述】:

我在比较 Python 中的字符串/子字符串时遇到了一些问题。 这是我的代码:

spelformer = "V86-1 V75-1 GS75-1".split()
l_count = 0
for line in input:
    print(line.split())
    print(spelformer)
    l_count += 1
    if line in spelformer:
        print("ja")
    else:
        print("nej")
    break

这是结果:

runfile('G:/Min enhet/Python/Travscript.py', wdir='G:/Min enhet/Python')
['V86-1']
['V86-1', 'V75-1', 'GS75-1']
nej

我可以看到,line 等于 V86-1,spelformer 等于 V86-1,因此它应该是匹配的。但是结果还是“nej”=“no”。

有人知道为什么吗?

抱歉新手问题..

【问题讨论】:

  • 为什么是break?它在第一次迭代后结束循环,总是......
  • Also...input 给你一个字符串(除非你足够大胆地重新定义这个内置函数),循环遍历这个字符串的单个字符; input 本身也不应该是可迭代的,如果用作 input(),它会返回一个可迭代的...
  • 已解决,使用 .strip()。我的输入文件中有一些隐藏的空格或其他内容。 “中断”只是在第一行之后结束循环,因为文件很大,我正在测试我的想法。不需要对所有行进行测试。

标签: python string substring


【解决方案1】:

也许你可以这样尝试:

spelformer = "V86-1 V75-1 GS75-1".split()
for s in input().split():
    if s in spelformer: print('yes')
    else: print('no')

【讨论】:

  • 用 .strip() 解决了。还是谢谢。
【解决方案2】:

您传递的 spelformer 字符串使用双引号 (" "),但您在输入中传递的字符串将被视为单引号 (' ')。因此,在拆分时,输入将逐个字符地拆分。 另外,输入的 () 丢失了。

【讨论】:

    【解决方案3】:

    如果 spelformer 中的 line[0]:

    这应该可以工作,因为现在将比较字符串值。早些时候,列表 ['V86-1'] 与 ['V86-1', 'V75-1', 'GS75-1'] 进行了比较。相反,您需要将字符串 'V86-1' 与 ['V86-1', 'V75-1', 'GS75-1'] 进行比较,因为列表中的所有元素都是字符串而不是另一个列表。

    【讨论】:

      最近更新 更多