为了账号安全,请及时绑定邮箱和手机立即绑定

比较 Python 中包含数字的字符串

比较 Python 中包含数字的字符串

米琪卡哇伊 2021-11-23 16:23:36
我有一个字符串列表,我想验证字符串上的一些条件。例如:String_1: 'The price is 15 euros'. String_2: 'The price is 14 euros'. Condition: The price is > 14 --> OK 我该如何验证?我实际上是这样做的:if ('price is 13' in string):     print('ok')我正在写所有有效的案例。我只想有一个条件。
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您可以列出字符串中的所有整数,并在之后的 if 语句中使用它们。


str = "price is 16 euros"

for number in [int(s) for s in str.split() if s.isdigit()]:

    if (number > 14):

        print "ok"

如果您的字符串包含多个数字,您可以在列表中选择要使用的数字。


希望能帮助到你。


查看完整回答
反对 回复 2021-11-23
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

如果字符串仅在数字上有所不同并且数字具有相同的位数,则您可以只比较字符串。IE:


String_1 = 'The price is 15 euros'

String_2 = 'The price is 14 euros'

String_3 = 'The price is 37 EUR'

该自然会归类为String_3> String_1>String_2


但不适用于:


String_4 = 'The price is 114 euros'

它有 3 位数字而不是 2 位,它将是String_4<String_3因此


所以,如果你能从字符串中提取数字就更好了,如下所示:


import re

def get_price(s):

    m = re.match("The price is ([0-9]*)", s)

    if m:

        return = int(m.group(1))

    return 0

现在您可以将价格作为整数进行比较:


price = get_price(String_1)

if price > 14:

    print ("Okay!")


. . .


if get_price(String_1) > 14:

    print ("Okay!")

([0-9]*)- 是正则表达式的捕获组,所有在圆括号中定义的都会group(1)在Python匹配对象的方法中返回。您可以[0-9]*根据需要进一步扩展这个简单的正则表达式。


如果您有字符串列表:


string_list = [String_1, String_2, String_3, String_4]


for s in string_list:

    if get_price(s) > 14:

        print ("'{}' is okay!".format(s))


查看完整回答
反对 回复 2021-11-23
?
PIPIONE

TA贡献1829条经验 获得超9个赞

我想你的字符串中只有一个值。所以我们可以用正则表达式来做。


import re

String_1 = 'The price is 15 euros.'

if float(re.findall(r'\d+', String_1)[0]) > 14:

    print("OK")


查看完整回答
反对 回复 2021-11-23
  • 3 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信