findall功能抓取错误的信息

时间:2014-04-25 00:53:56

标签: python-2.7 findall

我正在尝试编写一段python来读取我的文件。代码如下:

import re, os
captureLevel = []   # capture read scale.
captureQID = []   # capture questionID.  
captureDesc = []   # capture description.
file=open(r'E:\Grad\LIS\LIS590 Text mining\Final_Project\finalproject_data.csv','rt')
newfile=open('finalwordlist.csv','w')
mytext=file.read()

for row in mytext.split('\n'):
    grabLevel=re.findall(r'(\d{1})+\n',row) 
    captureLevel.append(grabLevel)      
    grabQID=re.findall(r'(\w{1}\d{5})',row)  
    captureQID.append(grabQID)              #ERROR LINE.
    grabDesc=re.findall(r'\,+\s+(\w.+)',row)
    captureDesc.append(grabDesc)

    lineCount = 0
    wordCount = 0
    lines = ''.join(grabDesc).split('.')
    for line in lines:
          lineCount +=1 
          for word in line.split(' '):
                 wordCount +=1
                 newfile.write(''.join(grabLevel) + '|' + ''.join(grabQID) + '|' + str(lineCount) + '|' + str(wordCount) + '|' + word + '\n')

newfile.close()

以下是我的三行数据:

a00004," another oakstr eetrequest, helped student request item",2 a00005, asked retiree if he used journal on circ list,2 a00006, asked scientist about owner of some archival notes,2

结果如下: 22|a00002|1|1|a00002, 22|a00002|1|2| 22|a00002|1|3|scientist 22|a00002|1|4|looking 22|a00002|1|5|for

结果的第一列应该只是一个数字,但为什么要打印出两位数?

知道这里有什么问题吗?谢谢。

1 个答案:

答案 0 :(得分:0)

再次显示标签和空格。需要特别注意Python。空格不被视为与制表符等效。这是一个有用的链接,谈论差异:http://legacy.python.org/dev/peps/pep-0008/。简而言之,建议在帖子中缩进空格。但是,我发现Tab也适用于缩进。保持缩进一致很重要。因此,如果您使用制表符,请确保一直使用它。