我对python非常陌生,并且在从类的属性中删除重复值时遇到了一些麻烦(我认为这是正确的术语)。
具体来说,我想删除同年的每个值。我应该注意,我只打印前四个值并搜索前四个值。属性中的数据实际上是以Yearmonthday格式(例如:19070101是1月1日的1907年)。
无论如何,这是我的代码:
import csv
import os
class Datatype:
'Data from the weather station'
def __init__ (self, inputline):
[ self.DATE,
self.PRCP] = inputline.split(',')
filename ='LAWe.txt'
LAWd = open(filename, 'r')
LAWefile = LAWd.read()
LAWd.close()
'Recognize the line endings for MS-DOS, UNIX, and Mac and apply the .split() method to the string wholeFile'
if '\r\n' in LAWefile:
filedat = LAWefile.split('\r\n') # the split method, applied to a string, produces a list
elif '\r' in LAWefile:
filedat = LAWefile.split('\r')
else:
filedat = LAWefile.split('\n')
collection = dict()
date= dict()
for thisline in filedat:
thispcp = Datatype(thisline) # here is where the Datatype object is created (running the __init__ function)
collection[thispcp.DATE] = thispcp # the dictionary will be keyed by the ID attribute
for thisID in collection.keys():
studyPRP = collection[thisID]
if studyPRP.DATE.isdigit():
list(studyPRP.DATE)
if len(date[studyPRP.DATE][0:4]):
pass #if year is seen once, then skip and go to next value in attribute
else:
print studyPRP.DATE[0:4] #print value in this case the year)
date[studyPRP.DATE]=studyPRP.DATE[0:4]
我收到了这个错误:
追踪(最近一次通话): 文件" project.py",第61行,in 如果len(日期[studyPRP.DATE] [0:4]): KeyError:' 19770509'
一个关键错误(这意味着一个值不在列表中?但是它适用于我的数据)可以通过使用set函数来修复(或者我已经读过),但我有30,000个我正在处理的信息,似乎你必须手动输入该信息,这样我就无法选择。
任何帮助都将不胜感激
很抱歉,如果这是令人困惑或荒谬的,因为我对python非常陌生。
答案 0 :(得分:0)
替换此
if len(date[studyPRP.DATE][0:4])
由此
if len(date[studyPRP.DATE[0:4]]):
说明:
KeyError: '19770509'
答案 1 :(得分:0)
不知道你到底想要什么。我会回复,因为我可以帮助你解决问题。
您的错误是因为您在添加之前在data
访问了您的年份。
此外,您要添加到收藏中的内容就像
{
<object>.DATE: <object>
}
我不知道你需要什么。您的下for loop
可以写成:
for thisID in collection:
if thisID.isdigit():
if thisID[0:4] in date and len(date[thisID[0:4]]):
#if year is seen once, then skip and go to next
# value in attribute
pass
else:
print thisID[0:4] #print value in this case the year)
date[thisID[0:4]]=thisID[0:4]
请注意,studyPRP.DATE
与thisID
相同。