有一组字符串如下
text:u'MUC-EC-099_SC-Memory-01_TC-25'
text:u'MUC-EC-099_SC-Memory-01_TC-26'
text:u'MUC-EC-099_SC-Memory-01_TC-27'
我从Xls文件中提取并转换为string
的这些数据,
现在我必须提取单引号内的数据并将它们放在列表中。
期待输出
[MUC-EC-099_SC-Memory-01_TC-25, MUC-EC-099_SC-Memory-01_TC-26,MUC-EC-099_SC-Memory-01_TC-27]
提前致谢。
答案 0 :(得分:8)
使用re.findall
:
>>> import re
>>> strs = """text:u'MUC-EC-099_SC-Memory-01_TC-25'
text:u'MUC-EC-099_SC-Memory-01_TC-26'
text:u'MUC-EC-099_SC-Memory-01_TC-27'"""
>>> re.findall(r"'(.*?)'", strs, re.DOTALL)
['MUC-EC-099_SC-Memory-01_TC-25',
'MUC-EC-099_SC-Memory-01_TC-26',
'MUC-EC-099_SC-Memory-01_TC-27'
]
答案 1 :(得分:3)
您可以使用以下表达式:
(?<=')[^']+(?=')
匹配'
和'
之间的'
个零个或多个字符。
Python代码:
quoted = re.compile("(?<=')[^']+(?=')")
for value in quoted.findall(str(row[1])):
i.append(value)
print i
答案 2 :(得分:2)
text:
前缀似乎有点熟悉。您使用xlrd
来提取它吗?在这种情况下,您拥有前缀的原因是因为您获取了包装的Cell
对象,而不是单元格中的值。例如,我认为你正在做类似
>>> sheet.cell(2,2)
number:4.0
>>> sheet.cell(3,3)
text:u'C'
要获取未包装的对象,请使用.value
:
>>> sheet.cell(3,3).value
u'C'
(请记住,这里的u
只是告诉你字符串是unicode;这不是问题。)