在我的测试代码中,我想断言字符串以数字结尾。假设数字在[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
?
答案 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)
(如果循环遍历许多路径,其中一些路径可能不希望您访问)