0

我有一个字符串列表,我想验证字符串的一些条件。例如:

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')

我正在写所有有效的案例。我只想满足一个条件。

4

5 回答 5

1

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

str = "price is 16 euros"
for number in [int(s) for s in str.split() if s.isdigit()]:
    if (number > 14):
        print "ok"

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

希望它有帮助。

于 2019-03-01T13:55:34.140 回答
0

字符串格式是否总是完全相同?如,它总是以“价格是”开头,然后有一个正整数,然后以“欧元”结尾?如果是这样,你可以将字符串拆分为单词并索引整数,将其转换为 int,并检查它是否大于 14。

if int(s.split()[3]) > 14:
    print('ok')

如果字符串不一致,您可能需要考虑使用正则表达式解决方案来获取句子的数字部分。

于 2019-03-01T13:51:59.077 回答
0

您可以使用正则表达式提取“价格为”之后的数字,然后将字符串格式的数字转换为int。并且,最后比较是否大于 14,例如:

import re
p = re.compile('price\sis\s\d\d*')
string1 = 'The price is 15 euros'
string2 = 'The price is 14 euros'

number = re.findall(p, string1)[0].split("price is ")

if int(number[1]) > 14:
    print('ok')

输出:

ok
于 2019-03-01T13:55:40.583 回答
0

如果字符串仅在数字上有所不同并且数字具有相同的位数,则可以只比较字符串。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))
于 2019-03-01T14:07:10.283 回答
0

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

import re
String_1 = 'The price is 15 euros.'
if float(re.findall(r'\d+', String_1)[0]) > 14:
    print("OK")
于 2019-03-01T14:08:35.583 回答