Python字符串函数(isinstance)无法按预期运行

时间:2019-08-28 09:06:47

标签: python python-3.x string

作为homie-pythom实现的一部分,以下代码:

def isValidId(idString):
    """Validate device Id."""
    logger.debug("isIdFormat")
    if isinstance(idString, str):
        r = re.compile('(^(?!\-)[a-z0-9\-]+(?<!\-)$)')
        return True if r.match(idString) else False

从json文件读取了idString的位置,应为“碗柜”

print("Loading Config:" + configfile)
config = homie.loadConfigFile(configfile)
device = homie.Device(config)

config是字典:

{
    "DEVICE_ID": "cupboard",
    "DEVICE_NAME": "cupboard",
}

在使用配置创建homie.Device对象后,DEVICE_ID将通过该字符串帮助器函数传递,该函数将判定它无效。

我在模块中重新创建了相同的代码:

print("Loading Config:" + configfile)
config = homie.loadConfigFile(configfile)
device = homie.Device(config)
print(config)
print("Config ID: " + config["DEVICE_ID"] + " Device Object iD:" + device.deviceId)
if device.deviceId != config["DEVICE_ID"]:
    print("homie.helpers.isValidId:")
    print(homie.helpers.isValidId(config["DEVICE_ID"]))

    print("isinstance(config['DEVICE_ID']:")
    print(isinstance(config["DEVICE_ID"], str))
    if isinstance(config["DEVICE_ID"], str):
        r = re.compile('(^(?!\-)[a-z0-9\-]+(?<!\-)$)')
        print(r.match(config["DEVICE_ID"]))

我在哪里得到以下信息:

{u'DEVICE_ID': u'cupboard', u'DEVICE_NAME': u'cupboard'}
Config ID: cupboard Device Object iD:b827ebf8fa72
homie.helpers.isValidId:
None
isinstance(config['DEVICE_ID']:
False

您可以看到isInstance(config ['DEVICE_ID'],str)得到了错误。 我认为这是我问题的症结所在.....为什么会这样?

此代码在rwspberry pi上的python 3.7上。

即使是在python中本地执行的操作也一样:

>>> import homie
>>> config = homie.loadConfigFile('sensorconfig/homie-dht-raspups.json')
>>> print config
{u'DEVICE_ID': u'cupboard', u'DEVICE_NAME': u'cupboard'}
>>> print(isinstance(config["DEVICE_ID"], str))
False

是u橱柜吗?

0 个答案:

没有答案