【问题标题】:How to compare strings based on a specific number of characters如何根据特定数量的字符比较字符串
【发布时间】:2019-10-05 22:34:01
【问题描述】:

我想创建一个程序,该程序根据输入的字符数接受键盘输入以进行字符串比较。例如,假设输入的字符数是 3,两个字符串是“tommy”和“tomatos”......它将比较“tom”和“tom”,并确定字符串相等。

我刚刚开始使用 python。我知道如何进行字符串比较,但我不知道如何合并字符比较。我还没有在网上找到任何资源来证明我想做的这个特别的事情。

s1 = input ("enter first string: ") 
s2 = input ("enter second string: ") 
n = input ("number of characters: ") 

if s1==s2:
 print(f'{s1} is equal than {s2}')
elif s1>s2:
 print (f'{s1} is greater than {s2}')
elif s1<s2:
 print (f'{s1} is less than {s2}')
else: 
 print ("Error")

此代码没有字符比较。代码运行良好。

【问题讨论】:

    标签: python character string-comparison


    【解决方案1】:

    您可以对字符串进行切片,从而只保留前n 个字符:

    s1 = input('enter first string: ') 
    s2 = input('enter second string: ') 
    n = int(input('number of characters: '))
    s1 = s1[:n]
    s2 = s2[:n]
    
    if s1 == s2:
     print(f'{s1} is equal than {s2}')
    elif s1 > s2:
     print (f'{s1} is greater than {s2}')
    elif s1 < s2:
     print (f'{s1} is less than {s2}')
    else: 
     print ("Error")

    【讨论】:

    • 也许您必须保留 s1 和 s2? (完全取决于这段代码的完整上下文)写s1_first_n = s1[:n] 可能会更好,他们在比较中使用这个变量。当然,s2 也是如此。第一条消息也可能会更改为准确到类似的内容。 f'the first {n} characters of {s1} and s{2} are equal
    【解决方案2】:

    您只需比较每个字符串的前 n 个字符。

    要获取字符串 s1 的第一个字符,请使用

    s1[:n]
    

    【讨论】:

      【解决方案3】:

      您可以使用正则表达式。通过使用“re.match”,如果两个子字符串都匹配,则打印 True,否则打印 false。

      import re
      
      s1 = input('enter first string: ') 
      s2 = input('enter second string: ') 
      n = int(input('number of characters: '))
      
      print(re.match(s1[:n],s2[:n]))
      
      

      【讨论】:

      • 以这种方式使用 re 来匹配字符串并不是一个好主意。想象一下字符串中的前两个字符是“^”,后跟另一个字母,例如“^a”,与包含反斜杠或“(”或“[”的字符串的许多其他比较也会失败。
      • 我最近才开始在 SO 上更加活跃。我只是对这个答案投了反对票,因为它可能会给出错误的结果。直到后来我才注意到,@kirti desai 是 SO 的一个相当新的成员,我可能已经“扼杀”了他的声誉。所以专家。处理这种情况的最好/最友好的方法是什么?特别是如果一个人真的想使用正则表达式(尽管在这种特殊情况下并不是很有利),一个人可以做类似print(re.match(re.escape(s1[:n]), s2[:n]))
      • 你可能毁了我的名声,但让我对实际使用正则表达式更加好奇。看来我误解了这个问题。我以为他只是想要切片的字符串是否匹配。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2022-06-22
      • 2015-11-06
      • 1970-01-01
      • 2020-01-31
      相关资源
      最近更新 更多