我有类似列表的返回
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']
答案 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
。