当前位置: 首页 > 面试题库 >

比较两个包含数字的python字符串

尉迟安民
2023-03-14
问题内容

更新:我应该早点指定它,但是并非所有名称都只是浮点数。例如,其中一些以“ YT”为前缀。因此,例如“ YT1.1。所以,您遇到相同的问题,YT1.9
<YT1.11应该为真。我真的很惊讶字符串比较失败…。

您好,这应该是一个非常简单的问题,但我似乎找不到答案。我想按名称对一堆XL工作表进行排序。每个名称都是数字,但与教科书“节”的编号方式相同,这意味着第4.11节在4.10之后,在4.9和4.1之后。我以为只是将这些数字作为字符串进行比较就可以了,但是我得到了以下信息:

>>> s1 = '4.11'
>>> s2 = '4.2'
>>> s1> s2
False
>>> n1 = 4.11
>>> n2 = 4.2
>>> n1 > n2
False

如何比较这两个值,使4.11大于4.2?


问题答案:

将名称转换为整数元组并比较元组:

def splittedname(s):
    return tuple(int(x) for x in s.split('.'))

splittedname(s1) > splittedname(s2)

更新 :由于您的姓名显然可以包含数字以外的其他字符,因此您需要检查ValueError并保留所有无法转换为整数的值:

import re

def tryint(x):
    try:
        return int(x)
    except ValueError:
        return x

def splittedname(s):
    return tuple(tryint(x) for x in re.split('([0-9]+)', s))

要对名称列表进行排序,请使用以下命令splittedname作为键功能sorted

>>> names = ['YT4.11', '4.3', 'YT4.2', '4.10', 'PT2.19', 'PT2.9']
>>> sorted(names, key=splittedname)
['4.3', '4.10', 'PT2.9', 'PT2.19', 'YT4.2', 'YT4.11']


 类似资料:
  • 问题内容: 我有一个简单的疑问。如果有人帮助我,那就太好了。 我有两个字符串: 这两个值相等,但是如何在Java中比较它们呢?我们拥有并用于比较字符串alpha值,类似地,如何比较数字值。 问题答案: 这就对了。您可以使用方法将数字字符串转换为整数,该方法将返回类型。然后比较与相同。

  • 问题内容: 我有两个字符串,分别为@CountryLocationIDs和@LocationIDs,其值分别为: 然后,我需要另一个变量中的输出为: 任何人都请帮忙…预先感谢… 问题答案: 我创建了一个表值函数,该函数接受两个参数,第一个是带有ID的字符串,第二个是字符串中的定界符。 创建函数后,只需使用set运算符即可: 已编辑 有了它,您将自动从两个字符串中获得不同的值,因此您不需要使用子句

  • 在与字符串进行比较时,我们可以使用或 在中,我们知道它检查引用,但在中它检查内容。 假设有两个字符串 字符串s=“SO”;字符串s1=“SO”; 所以在这种情况下,s1==s和s.equals(s1)都将为真。 但在这里它给了我错误 所以我假设比优先级高 所以在这种情况下 它将像(“s1)==s一样被拆分,现在“s1”将是一个新字符串,因此新字符串永远不会等于s,因此其打印错误 我只是想知道我的想

  • 问题内容: 我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因? 问题答案: 不一定是这种情况,但大多数时候可能是这样。 请考虑以下情况: 我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oran

  • 问题内容: 有什么方法可以像下面这样在SQL Server 2008存储过程中比较两个字符串? 如果字符串相同,则返回0 如果根据当前的排序顺序,第一个参数小于第二个参数,则返回-1。 否则返回1。 以上方法我在MySQL中找到,但在SQL Server中找不到。 问题答案: SQL Server中没有直接的字符串比较功能 笔记 您可以使用CREATE FUNCTION等通过UDF进行包装 您可能

  • 我会如何比较以下两个日期?