新年第一问,求大神帮忙解决python处理csv数据文件问题

jp163123 2019-02-12 05:56:48
1,a,2018-01-01,2018-03-01,1
2,a,2018-01-01,2018-02-01,2
3,a,2018-04-01,2018-05-01,3
4,a,2018-02-01,2018-05-01,4
5,a,2018-03-20,2018-04-01,2
6,a,2018-04-22,2018-05-01,4
7,b,2018-03-01,2018-03-22,1
8,b,2018-04-05,2018-06-22,2
9,b,2018-05-01,2018-05-22,4
10,b,2018-05-01,2018-05-22,1
11,b,2018-05-02,2018-05-12,1

数据文件如上所示,需求:第一列编号小的顺序循环跟比它大的比较,如果第二列相等,判断第三,四,五列,如果与之相比的第五列不等于4,而且时间范围在它之内则为错误数据把数据抛出来,如果与之相比的第五列等于4并且第三列时间小于等于它,第四列时间等于它为正确数据,否则为错误数据,把数据抛出来然后跳出循环从下一条数据开始按照上面规则往下比较。
如示例错误数据为
2,a,2018-01-01,2018-02-01,2
6,a,2018-04-22,2018-05-01,4
9,b,2018-05-01,2018-05-22,4
11,b,2018-05-02,2018-05-12,1
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dustin2019 2019-02-13
  • 打赏
  • 举报
回复
import csv csv_contents = [] err = [] with open("a.csv", "r") as csv_f: contents = csv.reader(csv_f) for row in contents: csv_contents.append(row) for i in range(0, len(csv_contents)): col1, col2, col3, col4, col5 = csv_contents[i] for j in range(i+1, len(csv_contents)): if col1 < csv_contents[j][0]: if col2 == csv_contents[j][1]: if csv_contents[j][4] == '4': if csv_contents[j][2] < col3 or csv_contents[j][3] != col4: if csv_contents[j] not in err: err.append(csv_contents[j]) else: if csv_contents[j][2] < col4: if csv_contents[j] not in err: err.append(csv_contents[j]) for k in range(0, len(err)): print(err[k]) 结果 ['2', 'a', '2018-01-01', '2018-02-01', '2'] ['4', 'a', '2018-02-01', '2018-05-01', '4'] ['6', 'a', '2018-04-22', '2018-05-01', '4'] ['5', 'a', '2018-03-20', '2018-04-01', '2'] ['9', 'b', '2018-05-01', '2018-05-22', '4'] ['11', 'b', '2018-05-02', '2018-05-12', '1'] 按照你的判断条件的描述,不能得到你列出的结果,例如,第4条和第1条比较,就是条错误的数据。
jp163123 2019-02-13
  • 打赏
  • 举报
回复
引用 1 楼 Dustin2019 的回复:
import csv

csv_contents = []
err = []
with open("a.csv", "r") as csv_f:
contents = csv.reader(csv_f)
for row in contents:
csv_contents.append(row)
for i in range(0, len(csv_contents)):
col1, col2, col3, col4, col5 = csv_contents[i]
for j in range(i+1, len(csv_contents)):
if col1 < csv_contents[j][0]:
if col2 == csv_contents[j][1]:
if csv_contents[j][4] == '4':
if csv_contents[j][2] < col3 or csv_contents[j][3] != col4:
if csv_contents[j] not in err:
err.append(csv_contents[j])
else:
if csv_contents[j][2] < col4:
if csv_contents[j] not in err:
err.append(csv_contents[j])

for k in range(0, len(err)):
print(err[k])

结果
['2', 'a', '2018-01-01', '2018-02-01', '2']
['4', 'a', '2018-02-01', '2018-05-01', '4']
['6', 'a', '2018-04-22', '2018-05-01', '4']
['5', 'a', '2018-03-20', '2018-04-01', '2']
['9', 'b', '2018-05-01', '2018-05-22', '4']
['11', 'b', '2018-05-02', '2018-05-12', '1']

按照你的判断条件的描述,不能得到你列出的结果,例如,第4条和第1条比较,就是条错误的数据。


可能没描述清楚,结果就是要列出的结果,已经用sql解决,还是非常感谢您的回复,python实在不会,只能想别的办法!!!

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧