栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Python在一行中选择具有特定值范围的行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Python在一行中选择具有特定值范围的行

这里的问题是您使用了

readlines()
两次,这意味着第一次读取数据,然后第二次什么都没剩下。

您可以直接在文件上进行迭代,而无需使用

readlines()
-实际上,这是更好的方法,因为它不会一次读取整个文件。

尽管可以通过按需使用来完成尝试做的事情

str.split()
,但是更好的选择是使用为任务设计的
csv
模块。

import csvwith open("addressbook1.txt") as input, open("college_age.txt", "w") as college, open("adult_age.txt", "w") as adult:   reader = csv.DictReader(input, dialect="excel-tab")   fieldnames = reader.fieldnames   writer_college = csv.DictWriter(college, fieldnames, dialect="excel-tab")   writer_adult = csv.DictWriter(adult, fieldnames, dialect="excel-tab")   writer_college.writeheader()   writer_adult.writeheader()   for row in reader:       if int(row["Age"]) < 23:          writer_college.writerow(row)       else:          writer_adult.writerow(row)

那我们在这里做什么?首先我们使用的

with
语句用于打开文件。它不仅更具Python可读性,而且即使在发生异常时也可以为您处理关闭。

接下来,我们创建一个

DictReader
从文件中读取作为字典的行,自动使用第一行作为字段名。然后,我们让编写者写回我们的拆分文件,并将标头写入其中。使用
DictReader
优先考虑。通常在访问大量数据的地方(以及当您不知道列的顺序)使用它的次数更多,但是它使代码在此处易于阅读。但是,您可以只使用standard
csv.reader()

接下来,我们遍历文件中的行,检查使用期限(将其转换为int以便进行数值比较)以知道要写入哪个文件。该

with
语句为我们关闭了文件。

对于多个输入文件:

import csvfieldnames = ["Name", "Date", "Age", "Sex", "Color"]filenames = ["addressbook1.txt", "addressbook2.txt", ...]with open("college_age.txt", "w") as college, open("adult_age.txt", "w") as adult:   writer_college = csv.DictWriter(college, fieldnames, dialect="excel-tab")   writer_adult = csv.DictWriter(adult, fieldnames, dialect="excel-tab")   writer_college.writeheader()   writer_adult.writeheader()   for filename in filenames:       with open(filename, "r") as input:reader = csv.DictReader(input, dialect="excel-tab")for row in reader:    if int(row["Age"]) < 23:       writer_college.writerow(row)    else:       writer_adult.writerow(row)

我们只是添加一个循环来处理多个文件。请注意,我还添加了一个字段名称列表。在我只使用文件中的字段和顺序之前,但是由于我们有多个文件,因此我认为在此处执行此操作更为明智。一种替代方法是使用第一个文件来获取字段名称。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626282.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号