Python CSV行和列的精确匹配

2024-06-28 19:28:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我四处看了一会儿,没有发现任何与我所做的相匹配的东西。在

我有这个代码:

import csv
import datetime

legdistrict = []
reader = csv.DictReader(open('active.txt', 'rb'), delimiter='\t')

for row in reader:
    if '27' in row['LegislativeDistrict']:
        legdistrict.append(row)

ages = []

for i,value in enumerate(legdistrict):
    dates = datetime.datetime.now() - datetime.datetime.strptime(value['Birthdate'], '%m/%d/%Y')
    ages.append(int(datetime.timedelta.total_seconds(dates) / 31556952))

total_values = len(ages)
total = sum(ages) / total_values

print total_values
print sum(ages)
print total

它搜索制表符分隔的文本文件,并在名为LegislativeDistrict的列中查找包含字符串27的行。(因此,查找第27个LD中的所有行)它运行得很好,但是如果字符串是一个单个数字,就会遇到问题。在

当我用27运行代码时,得到以下结果:

^{pr2}$

这意味着有74741个值包含27,组合年龄为3613841,平均年龄为48岁。在

但是当我用4运行代码时,我得到了以下结果:

0 ;) eric@crunchbang ~/sbdmn/May 2014 $ python data.py
1177818
58234407
49

第一个结果(1177818)是太多过大。在我的州,没有超过17万人的民主联盟,我的名单只涉及选民。在

因此,我假设使用4是在查找所有包含4的值。。。因此1441、和{}都将被使用,从而导致数量巨大。在

有没有方法可以搜索特定列中的值并使用正则表达式或精确搜索?Regex可以工作,但是我不能让它只搜索一列——它搜索整个文本文件。在

我的数据如下:

StateVoterID    CountyVoterID   Title   FName   MName   LName   NameSuffix  Birthdate   Gender  RegStNum    RegStFrac   RegStName   RegStType   RegUnitType RegStPreDirection   RegStPostDirection  RegUnitNum  RegCity RegState    RegZipCode  CountyCode  PrecinctCode    PrecinctPart    LegislativeDistrict CongressionalDistrict   Mail1   Mail2   Mail3   Mail4   MailCity    MailZip MailState   MailCountry Registrationdate    AbsenteeType    LastVoted   StatusCode
IDNUMBER    OTHERIDNUMBER       NAME        MI      01/01/1900  M   123     FIRST   ST      W           CITY    STATE   ZIP MM  123 4   AGE 5                                   01/01/1950  N   01/01/2000  B

Tags: csv代码inimportfordatetimereaderrow