python返回格式奇怪的字符串
我试图编辑一个Python模块,但是我没有从变量中得到我期望的值。代码是:python返回格式奇怪的字符串,python,ansible,python-2.x,Python,Ansible,Python 2.x,我试图编辑一个Python模块,但是我没有从变量中得到我期望的值。代码是: def populate_ipv4_interfaces(self, data): for key, value in data.items(): vrf = re.findall(r'VPN Routing/Forwarding "(.+)"', value) 我希望输出一个字符串值。它确实包含我的字符串,但包含其他内容。当我强制它是这样的字符串时: vrf = s
def populate_ipv4_interfaces(self, data):
for key, value in data.items():
vrf = re.findall(r'VPN Routing/Forwarding "(.+)"', value)
我希望输出一个字符串值。它确实包含我的字符串,但包含其他内容。当我强制它是这样的字符串时:
vrf = str(re.findall(r'VPN Routing/Forwarding "(.+)"', value))
给我的值是“[u'Internet']”,而不是“Internet”
我查过u,我意识到这表示一个unicode字符,但我不知道为什么它会把这些信息和字符串一起拉
如果有帮助的话,这是一个ansible模块,但我已经将其缩小到了这个变量,因为如果我在事实中指定一个字符串而不是这个变量,那么一切都会按预期进行
有人能告诉我为什么我会看到这种行为吗?返回一个结果列表-即使只有一个结果
unicode字符串仍然是字符串。所有蛹的行为应相同
因此,您要寻找的结果是:
vrf = re.findall(r'VPN Routing/Forwarding "(.+)"', value)[0]
不要直接在结果上使用str
。re.findall()
返回一个列表,因此使用连接来获取它们:
vrf = ' '.join(re.findall(r'VPN Routing/Forwarding "(.+)"', value))
另一种方法是使用列表索引获取第一项:
vrf = re.findall(r'VPN Routing/Forwarding "(.+)"', value)[0]
“其中我希望输出字符串值”-。