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

我试图编辑一个Python模块,但是我没有从变量中得到我期望的值。代码是:

    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]

“其中我希望输出字符串值”-。