python检查字符串是否以有效范围内的数字结尾

时间:2016-04-28 13:04:40

标签: python regex

在我的测试代码中,我想断言字符串以数字结尾。假设数字在[0,3)之间:

assert_equals('/api_vod_asset/v0/assets/0', '/api_vod_asset/v0/assets/number') #valid

assert_equals('/api_vod_asset/v0/assets/1', '/api_vod_asset/v0/assets/number') #valid

assert_equals('/api_vod_asset/v0/assets/5', '/api_vod_asset/v0/assets/number') #invalid

如何使用正则表达式或其他技术number

8 个答案:

答案 0 :(得分:3)

您可能希望使用 assertRegex

test_case.assertRegex('/api_vod_asset/v0/assets/0', '/api_vod_asset/v0/assets/[012]')

上述一个适用于[0,3]范围的情况。如果你不想要这个限制,你可能想要:

test_case.assertRegex('/api_vod_asset/v0/assets/0', '/api_vod_asset/v0/assets/[\d]')

以上代码添加到您的代码段之后,上述所有代码都可以使用:

import unittest as ut
test_case = ut.TestCase()

答案 1 :(得分:2)

如果它始终位于字符串中的同一位置,则可以使用while (true) { cap >> input; cv::imshow("input", input); cv::waitKey(0); }

类似

string.split

然后你可以做

def check_range(to_test, valid_range):
    return int(to_test.split('/')[-1]) in range(valid_range[0], valid_range[1] + 1)

答案 2 :(得分:2)

首先,使用\d+$之类的正则表达式在字符串末尾(\d+)获取任意数字($)...

>>> m = re.search(r"\d+$", s)

...然后检查您是否匹配以及该号码是否在所需范围内:

>>> m is not None and 0 <= int(m.group()) < 3

或者使用range,如果您更喜欢这种表示法(假设[0,3)的上限是独占的):

>>> m is not None and int(m.group()) in range(0, 3)

答案 3 :(得分:1)

我想断言字符串以数字结尾

if int(myString[-1]) in [0,1,2]:
     do something...

答案 4 :(得分:0)

>>> import re
>>> match = re.search(r'/api_vod_asset/v0/assets/(\d+)', '/api_vod_asset/v0/assets/5')
>>> match
<_sre.SRE_Match object at 0x10ff4e738>
>>> match.groups()
('5',)
>>> match.group(1)
'5'
>>> x = int(match.group(1))
>>> 0 <= x < 3
False
>>> 0 <= 2 < 3
True

答案 5 :(得分:0)

正则表达式:

import re
reg_func = lambda x: bool(re.match(r'.*?[0123]$', x))

的Python:

py_func = lambda x: x.endswith(tuple(map(str, range(4))))

答案 6 :(得分:0)

我不确定这是最优雅的方式,但这就是我要做的事情:

def is_finished_correctly(path):
# The code seems self-explaining, ask if you need more detailed explanations
    return (int(path.split("/")[-1]) in range(3))

assert(is_finished_correctly('/api_vod_asset/v0/assets/0'))

答案 7 :(得分:0)

如果您不想使用正则表达式,请尝试以下操作:

a = "hello"
a[-1] = "o" # gives you the last character of a string
try: 
    int(a[-1])
    print "last position is int"
except: 
    print "last position is no int"
在错误的基础中传递参数时,

int()会引发ValueError,默认值为10。

你现在可以这样做:

path = '/api_vod_asset/v0/assets/0'
try: 
    int(path[-1])
    # do all your stuff here
except: 
    print "wrong path"
    continue # (if you are in a loop)

(如果循环遍历许多路径,其中一些路径可能不希望您访问)