如何比较2个不同字符串的子字符串?

时间:2019-01-24 06:20:59

标签: python computer-science

我正在尝试比较2个姓氏,看看哪个按字母顺序排在首位

  • Grace Hopper
  • 凯瑟琳·约翰逊

如何提取[firstword:secondword]格式的任何字符串中的第二个单词?

5 个答案:

答案 0 :(得分:1)

要提取姓氏,可以使用split拆分名字。默认情况下,它将在空白处分割:

fullname = 'Grace Hopper'
first_name, last_name = fullname.split()

然后,按字母顺序进行比较,只需比较姓氏:

if last_name_1 < last_name_2:
    ...

或者,使用sorted对名称列表中的所有名称进行排序:

fullnames = 'Grace Hopper', 'Katherine Johnson'

sorted_fullnames = sorted(fullnames, key=lambda fullname: fullname.split()[1])

答案 1 :(得分:1)

似乎您想从全名中获取姓氏。 如果一个人“ 1”的名字是“ ABC DEF”; 另一个人“ 2”的名称为“ PQR STU”;

您可以使用split()命令对字符串进行标记。

person1 = "ABC DEF"
person2 = "PQR STU"
name1   = person1.split(" ")
name2   = person2.split(" ")

现在结果将是

print(name1)
>>> ['ABC', 'DEF']
print(name2)
>>> ['PQR', 'STU']

答案 2 :(得分:0)

尝试一下:

s = 'Grace Hopper Katherine Johnson'

result = min(s.split()[1::2])
print(result)

输出:

Hopper

请注意,它区分大小写(A <a)。对于不区分大小写的版本:

result = min(s.split()[1::2], key=str.lower)

答案 3 :(得分:0)

使用.split函数将字符串拆分为单词。

In [1]: a="Grace Hopper"

In [2]: b="Katherine Johnson"

In [3]: a.split()
Out[3]: ['Grace', 'Hopper']

In [4]: b.split()
Out[4]: ['Katherine', 'Johnson']

In [6]: a.split()[1]
Out[6]: 'Hopper'

In [8]: b.split()[1]
Out[8]: 'Johnson'

In [9]: a.split()[1] < b.split()[1]
Out[9]: True

答案 4 :(得分:0)

最合适的方法是使用split()函数:

  

使用sep作为分隔符,返回字符串中单词的列表   字符串。

     

如果未指定sep或为None,则使用不同的拆分算法   应用:连续空格的运行被视为单个   分隔符,结果开头将不包含任何空字符串   或结尾(如果字符串具有前导或尾随空格)。


例如:

>>> name = "Grace Hopper"
>>> name = name.split()
>>> name
>>> ["Grace", "Hopper"]

如果要按字母顺序比较几个字符串,只需使用比较运算符之一:

>>> name1 = "Stan"
>>> name2 = "Viktor"
>>> name1 > name2
>>> False

由于ord("S") < ord("V"),您得到此结果,ord()内置函数返回一个整数,表示该字符的Unicode代码点。