我四处看了一会儿,没有发现任何与我所做的相匹配的东西。在
我有这个代码:
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
运行代码时,得到以下结果:
这意味着有74741个值包含27
,组合年龄为3613841,平均年龄为48岁。在
但是当我用4
运行代码时,我得到了以下结果:
0 ;) eric@crunchbang ~/sbdmn/May 2014 $ python data.py
1177818
58234407
49
第一个结果(1177818)是太多过大。在我的州,没有超过17万人的民主联盟,我的名单只涉及选民。在
因此,我假设使用4
是在查找所有包含4
的值。。。因此14
、41
、和{
有没有方法可以搜索特定列中的值并使用正则表达式或精确搜索?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
'4' in '400'
将返回True
,就像substring check一样。请改为使用'4' == '400'
,如果两个字符串相同,它将返回True
:相关问题 更多 >
编程相关推荐