用python从文件中提取部分文本

用python从文件中提取部分文本,python,string,python-2.7,Python,String,Python 2.7,我有一个文本文件集合,其形式如下: Sponsor : U of NC Charlotte U N C C Station Charlotte, NC 28223 704/597-2000 NSF Program : 1468 MANUFACTURING MACHINES & EQUIP Fld Applictn: 0308000 Industrial Technology

我有一个文本文件集合,其形式如下:

Sponsor     : U of NC Charlotte
      U N C C Station
      Charlotte, NC  28223    704/597-2000

NSF Program : 1468      MANUFACTURING MACHINES & EQUIP
Fld Applictn: 0308000   Industrial Technology                   
          56        Engineering-Mechanical                  
Program Ref : 9146,MANU,
Abstract    :
          9500390  Patterson   This award supports a new concept in precision metrology,
          the Extreme Ultraviolet Optics Measuring Machine (EUVOMM).  The goals for this
          system when used to measure optical surfaces are a diameter range of 250 mm
          with a lateral accuracy of 3.3 nm rms, and a depth range of 7.5 mm w
代码段上方和下方有更多文本。对于每个文本文件,我希望能够执行以下操作:

y_num[i] = 1468, 0308000, 56
y_txt[i] = MANUFACTURING MACHINES & EQUIP, Industrial Technology, Engineering-Mechanical
将NSF程序和Fld Applictn编号存储在一个列表中,并将相关文本存储在另一个列表中

因此,在上面的示例中,对于第I个文本文件,我需要以下内容:

y_num[i] = 1468, 0308000, 56
y_txt[i] = MANUFACTURING MACHINES & EQUIP, Industrial Technology, Engineering-Mechanical

在python中有没有一种干净的方法可以做到这一点?我更喜欢python,因为我使用os.walk解析存储在子目录中的所有文本文件

您可以尝试以下方法

yourtextlist = yourtext.split(':')
numbers = []
for slice in yourtextlist:
    l = slice.split()
    try:
        numbers.append(int(l[0]))
    except ValueError:
        pass

因此,values和values1具有特定的值,您需要测试这些值,具体取决于格式的一致性。您可以使用正则表达式或简单的字符串操作,也可以通过编写解析器来实现这一点。所有这些在python中都是可能的。是的,如果你经常做字符串操作,那么字符串操作就会变得相当乏味。虽然有时候也没那么糟糕。例如,请参阅我的答案。将open(filename,'r')作为f:for-in-f.detailures():给我:file对象没有属性detailures“查找新代码。这实际上是readlines。抱歉。自动更正有时很糟糕。谢谢,这很有意义。我实际上在谷歌上搜索了“detailures”“在python文件操作的上下文中,它抛出了垃圾。从没想过这是一个打字错误!您的解决方案是有效的,因为我得到了所需的字段。我必须将这些行中的数字和文本分开,但这是可行的。还有,如果-->elif,谢谢。我尝试了这个,但它也保存了文本中的每个数字。我专门寻找与上述字段对应的数字。