3

有一组字符串如下

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]

提前致谢。

4

3 回答 3

11

使用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'
]
于 2013-10-18T12:34:54.140 回答
5

您可以使用以下表达式:

(?<=')[^']+(?=')

这匹配零个或多个不是'包含在'和之间的字符'

蟒蛇代码:

quoted = re.compile("(?<=')[^']+(?=')")
for value in quoted.findall(str(row[1])):
    i.append(value)
    print i
于 2013-10-18T12:33:21.007 回答
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;这不是问题。)

于 2013-10-18T12:45:05.843 回答