获取Python中列表内引号之间的值

时间:2019-06-06 07:10:56

标签: python

我有类似列表的返回

wks=[<Worksheet u'Categories' id:530738213>, <Worksheet u'TCS Centre' id:0>, <Worksheet u'Vismaya' id:1615183731>]

想要在引号内的值

尝试过

import re
re.findall('"([^']*)"',wks)

但是它不适用于列表

最终输出应为

wkslist=['Categories','TCS Centre','Vismaya']

3 个答案:

答案 0 :(得分:1)

该列表由对象构成。每个对象实际上是一个Worksheet实例,在列表中由其__repr__方法表示。为了获得括号之间的值,您需要知道Worksheet属性的名称。这是一个示例-假设Worksheet的外观如下:

class Worksheet:
    def __init__(self):
        self.name = "Categories"

    def __repr__(self):
        return f"<Worksheet {self.name}>"

在这种情况下,您需要提取name属性:

new_list = [elem.name for elem in wks]

答案 1 :(得分:1)

尝试一下:

import re

wks=["<Worksheet u'Categories' id:530738213>", "<Worksheet u'TCS Centre' id:0>", "<Worksheet u'Vismaya' id:1615183731>"]


result = []
for i in wks:
    match = re.findall(r"'(.*)'", i.strip())
    result += match

print(result)

输出:

['Categories', 'TCS Centre', 'Vismaya']

答案 2 :(得分:1)

如果必须使用这些对象的字符串表示形式,还可以尝试类似的操作

 wks=["<Worksheet u'Categories' id:530738213>", "<Worksheet u'TCS Centre' id:0>", "<Worksheet u'Vismaya' id:1615183731>"]
 [w.split("'")[1] for w in wks]

获得

 ['Categories', 'TCS Centre', 'Vismaya']

我们根据wks字符的出现情况将'拆分为3个部分 wks的每个元素。您需要的是中间一个,它的索引为1