如何使用python脚本在单引号内提取字符串

时间:2013-10-18 12:29:12

标签: python regex strip findall recompile

有一组字符串如下

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]

提前致谢。

3 个答案:

答案 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;这不是问题。)