【问题标题】:extract string including empty values from a plain text using python使用python从纯文本中提取包含空值的字符串
【发布时间】:2018-12-18 19:25:14
【问题描述】:

我有一个字符串

a='S
LINC             SHORT LEGAL                                   TITLE NUMBER
0037 471 661     1720278;16;21                                 172 211 342

LEGAL DESCRIPTION
PLAN 1720278  
BLOCK 16  
LOT 21  
EXCEPTING THEREOUT ALL MINES AND MINERALS  

ESTATE: FEE SIMPLE  
ATS REFERENCE: 4;24;54;2;SW

MUNICIPALITY: CITY OF EDMONTON

REFERENCE NUMBER: 172 023 641 +71

---------------------------------------------------------------------------- 
----
                     REGISTERED OWNER(S)
REGISTRATION    DATE(DMY)  DOCUMENT TYPE      VALUE           CONSIDERATION
----------------------------------------------------------------------------- 
---

172 211 342    15/08/2017                      $610,000        CASH & MTGE'

需要提取文档类型、值和考虑值以下的值并输出到类似['','$610,000','CASH & MTGE'] 的数组中 我尝试使用findall(r'(?<!\S)(?:[$]\S+|[^$\d]+)\b', a)。但我只能得到 ['$610,000','CASH & MTGE'] 并且没有文档类型的值,因为它是空的。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    据我了解,您想从字符串中返回一个值为$610,000 CASH & MTGE' 的数组吗?

    假设最终保留所需的字符串值,我们可以利用splitlines 函数。然后,使用len(a)-1 获取所需的字符串,如下所示:

    >>> a='''S
    LINC             SHORT LEGAL                                   TITLE NUMBER
    0037 471 661     1720278;16;21                                 172 211 342
    
    LEGAL DESCRIPTION
    PLAN 1720278  
    BLOCK 16  
    LOT 21  
    EXCEPTING THEREOUT ALL MINES AND MINERALS  
    
    ESTATE: FEE SIMPLE  
    ATS REFERENCE: 4;24;54;2;SW
    
    MUNICIPALITY: CITY OF EDMONTON
    
    REFERENCE NUMBER: 172 023 641 +71
    
    ---------------------------------------------------------------------------- 
    ----
                         REGISTERED OWNER(S)
    REGISTRATION    DATE(DMY)  DOCUMENT TYPE      VALUE           CONSIDERATION
    ----------------------------------------------------------------------------- 
    ---
    
    172 211 342    15/08/2017                      $610,000        CASH & MTGE'''
    
    >>> b=a.splitlines()
    >>> req_line = b[len(b)-1]
    >>> print(req_line)
    

    【讨论】:

    • 上述解决方案将最后一行中的整行打印为字符串。相反,是否可以仅获取数组中的最后 3 个字段值。如果某个字段有空值,请不要,它也应该包含在内。
    • 好吧,我们可以在req_line 上调用不带参数的split() 函数来返回具有值的字段数组,但是如果您还需要空列,我们需要探测数组值以获取它们的值假定位置,例如,如果“CASH”列始终存在,我们可以检查数组上的索引1 是否具有 len > 0 等等。
    • 如果列有任何空值,有没有办法将空字符串放入数组中?
    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多