问题描述:
我有以下内容,我想测试是否相等:
id_0 = 40
id_1 = 48
id_2 = 49
id_3 = 41
id_4 = 0
conc_value = chr(id_0)+chr(id_1)+chr(id_2)+chr(id_3)+chr(id_4)
if conc_value == '(01)':
print('Match')
else:
print('Mismatch')
我总是得到不匹配。我如何比较这两个值?
解决思路一:
这是因为您不需要空字符来结束 python 中的字符串
id_0 = 40
id_1 = 48
id_2 = 49
id_3 = 41
conc_value = chr(id_0)+chr(id_1)+chr(id_2)+chr(id_3)+chr(id_4)
if conc_value.replace("\0", "") == '(01)':
print('Match')
else:
print('Mismatch')
#Match
此思路的相关讨论:
-
问:当我使用上面的示例数据时,确实会遇到各种错误。我检查了,我正在使用 dplyr v1.0.3。应该没问题..我得到的第一个错误是:错误:“Reduce(\”中的意外输入)
-
答:您使用的是 R >= v4.1 吗?如果不是,您需要升级,或将行替换Reduce(\(x, y) rows_patch(为Reduce(function(x, y) rows_patch
-
问:我检查了它的 R 4.0.3(64 位)。我已将其更改为 4.1 并且可以正常工作!
解决思路二:
Python 字符串不是以 NUL 结尾的。不要添加chr(id_4)
到字符串中,这是可行的。或者更改被比较的文字'(01)\0'
(尽管在不使用它们的字符串中想要一个 NUL“终止符”是非常不寻常的)。
如果您的数据来自外部系统(我们将想象一个函数get_ordinal
通过某种方式从外部系统返回下一个 Unicode 序号,并NoMoreData
在没有剩余时引发自定义异常),那么只需在值进入时过滤它们:
以上仅为部分解决思路介绍,查看全部内容,请添加公众号后回复001,即可查看。