【问题标题】:Python: extracting text from strings using a key phrasePython:使用关键短语从字符串中提取文本
【发布时间】:2015-06-19 21:47:13
【问题描述】:

正在努力寻找一种方法来做到这一点,任何帮助都会很棒。

我有一个很长的字符串——它是标题字段。以下是一些示例。

AIR-LAP1142N-A-K
AIR-LP142N-A-K
Used Airo 802.11n Draft 2.0 SingleAccess Point AIR-LP142N-A-9
Airo AIR-AP142N-A-K9 IOS Ver 15.2
MINT Lot of (2) AIR-LA112N-A-K9 - Dual-band-based 802.11a/g/n
Genuine Airo 112N  AP AIR-LP114N-A-K9 PoE
Wireless AP AIR-LP114N-A-9  Airy 50 availiable

我需要从标题中提取部件号并将其分配给名为“PartNumber”的变量。零件编号始终以字符“AIR-”开头。

例如-

Title = ‘AIR-LAP1142N-A-K9 W/POWER CORD’
PartNumber = yourformula(Title)

Print (PartNumber) 将输出AIR-LAP1142N-A-K9

我对 python 还很陌生,非常感谢帮助。我希望它只打印零件编号而不是之前或之后的所有其他文本。

【问题讨论】:

  • 尝试查看正则表达式。 import re

标签: python string key


【解决方案1】:

您要查找的内容称为正则表达式,并在re module 中实现。例如,您需要编写如下内容:

>>> import re
>>> def format_title(title):
...     return re.search("(AIR-\S*)", title).group(1)
>>> Title = "Cisco AIR-LAP1142N-A-K9 W/POWER CORD"
>>> PartNumber = format_title(Title)
>>> print(PartNumber)
AIR-LAP1142N-A-K9

\S 确保您将 所有内容AIR- 匹配到下一个空白字符。

【讨论】:

    【解决方案2】:
    def yourFunction(title):
        for word in title.split():
            if word.startswith('AIR-'):
                return word
    
    >>> PartNumber = yourFunction(Title)
    >>> print PartNumber
    
    AIR-LAP1142N-A-K9
    

    【讨论】:

      【解决方案3】:

      现在是使用regular expression 的明智时机。看起来部件号由大写字母、连字符和数字组成,所以应该可以:

      import re
      def extract_part_number(title):
          return re.search(r'(AIR-[A-Z0-9\-]+)', title).groups()[0]
      

      如果它得到的字符串不包含看起来像零件号的东西,这将引发错误,因此您可能需要添加一些检查以确保 re.search 不会返回 Nonegroups 不返回空元组。

      【讨论】:

        【解决方案4】:

        您可以/可以使用.split() 函数。它的作用是将由空格分隔的部分文本拆分成一个列表。

        要按照您想要的方式执行此操作,我将创建一个新变量(命名为任意);虽然对于这个例子,让我们使用titleSplitList。 (因为这个变量等于titleSplitList = Title.split()

        从这里,您知道您要检索的文本部分是titleSplitList 的第二项,因此您可以通过以下方式将其分配给新变量:

        PartNumber = titleSplitList[1]
        

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 2019-08-16
          • 1970-01-01
          • 2020-08-16
          • 2022-01-09
          • 1970-01-01
          • 1970-01-01
          • 2019-09-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多