描述
请将inf.in文件(utf-8编码)的个人身份信息以csv格式存到到inf.out文件(以utf-8编码)。
格式
输入:inf.in文件
姓名:周紫薇
居住地:北京
身份证号:110101199003073597
手机号:19838855767
姓名:广雨旋
居住地:上海
身份证号:310101199003074538
手机号:18334444671
姓名:国天欣
居住地:广州
身份证号:440103199003071398
手机号:17131292567
姓名:高白桃
居住地:深圳
身份证号:440303199003078179
手机号:15725375874
输出:inf.out文件
姓名,手机号,身份证号,居住地
周紫薇,19838855767,110101199003073597,北京
广雨旋,18334444671,310101199003074538,上海
国天欣,17131292567,440103199003071398,广州
高白桃,15725375874,440303199003078179,深圳
代码:
fr = open('inf.in', 'r', encoding='utf-8')
fw = open('inf.out', 'w', encoding='utf-8')
fw.write("姓名,手机号,身份证号,居住地\n")
info = {}
count = 0
for line in fr:
key, value = line.split(":")
key = key.strip()
value = value.strip()
info[key] = value
count += 1
if count == 4:
fw.write(f"{info['姓名']},{info['手机号']},{info['身份证号']},{info['居住地']}\n")
count = 0
info = {}
fr.close()
fw.close()
代码解析:
fr = open('inf.in', 'r', encoding='utf-8')
:打开名为'inf.in'的文件,以只读模式读取('r'
),使用UTF-8编码(encoding='utf-8'
),并将文件对象赋值给变量fr
。fw = open('inf.out', 'w', encoding='utf-8')
:打开名为'inf.out'的文件,以写入模式('w'
),使用UTF-8编码(encoding='utf-8'
),并将文件对象赋值给变量fw
。fw.write("姓名,手机号,身份证号,居住地\n")
:向文件fw
中写入字符串"姓名,手机号,身份证号,居住地",表示写入表头。info = {}
:创建一个空字典info
,用于存储读取的数据。count = 0
:初始化计数器count
为0,用于统计读取的行数。for line in fr:
:遍历文件对象fr
中的每一行数据,并将每一行赋值给变量line
。key, value = line.split(":")
:使用字符串的split()
方法按冒号":"将每一行分割成两部分,并将分割后的结果分别赋值给变量key
和value
。key = key.strip()
:使用字符串的strip()
方法去除key
两端的空白字符,包括换行符。value = value.strip()
:使用字符串的strip()
方法去除value
两端的空白字符,包括换行符。info[key] = value
:将key
作为字典info
的键,value
作为对应键的值,将数据存入字典info
中。count += 1
:计数器count
加1,表示已读取一行数据。if count == 4:
:如果count
等于4,即已读取了4行数据(包括表头)。fw.write(f"{info['姓名']},{info['手机号']},{info['身份证号']},{info['居住地']}\n")
:使用f-string
将字典info
中的姓名、手机号、身份证号和居住地以逗号分隔的形式写入文件fw
。并在末尾添加换行符"\n"。count = 0
:重置计数器count
为0。info = {}
:清空字典info
。读取名为'inf.in'的文件中的数据,将每一行按冒号分割成两部分,并将第一部分作为字典的键,第二部分作为对应键的值。当读取4行数据后,将姓名、手机号、身份证号和居住地以逗号分隔的形式写入到名为'inf.out'的文件中。