【问题标题】:how to extract string inside single quotes using python script如何使用python脚本提取单引号内的字符串
【发布时间】:2013-10-27 07:12:04
【问题描述】:

有如下一组字符串

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]

提前致谢。

【问题讨论】:

    标签: python regex strip findall recompile


    【解决方案1】:

    您可以使用以下表达式:

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

    这匹配零个或多个不是' 的字符,它们包含在'' 之间。

    Python 代码:

    quoted = re.compile("(?<=')[^']+(?=')")
    for value in quoted.findall(str(row[1])):
        i.append(value)
        print i
    

    【讨论】:

    • @Mr.Calm 欢迎您,我会将您的代码添加到答案中。请不要忘记在可能的情况下接受答案。谢谢你:)
    【解决方案2】:

    使用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'
    ]
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-18
        • 2013-11-09
        • 1970-01-01
        • 1970-01-01
        • 2016-12-24
        • 2014-05-06
        • 2012-07-07
        • 2020-03-08
        相关资源
        最近更新 更多