派森 #P130. 信息存csv文件

描述

请将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()

代码解析:

  1. fr = open('inf.in', 'r', encoding='utf-8'):打开名为'inf.in'的文件,以只读模式读取('r'),使用UTF-8编码(encoding='utf-8'),并将文件对象赋值给变量fr
  2. fw = open('inf.out', 'w', encoding='utf-8'):打开名为'inf.out'的文件,以写入模式('w'),使用UTF-8编码(encoding='utf-8'),并将文件对象赋值给变量fw
  3. fw.write("姓名,手机号,身份证号,居住地\n"):向文件fw中写入字符串"姓名,手机号,身份证号,居住地",表示写入表头。
  4. info = {}:创建一个空字典info,用于存储读取的数据。
  5. count = 0:初始化计数器count为0,用于统计读取的行数。
  6. for line in fr::遍历文件对象fr中的每一行数据,并将每一行赋值给变量line
  7. key, value = line.split(":"):使用字符串的split()方法按冒号":"将每一行分割成两部分,并将分割后的结果分别赋值给变量keyvalue
  8. key = key.strip():使用字符串的strip()方法去除key两端的空白字符,包括换行符。
  9. value = value.strip():使用字符串的strip()方法去除value两端的空白字符,包括换行符。
  10. info[key] = value:将key作为字典info的键,value作为对应键的值,将数据存入字典info中。
  11. count += 1:计数器count加1,表示已读取一行数据。
  12. if count == 4::如果count等于4,即已读取了4行数据(包括表头)。
  13. fw.write(f"{info['姓名']},{info['手机号']},{info['身份证号']},{info['居住地']}\n"):使用f-string将字典info中的姓名、手机号、身份证号和居住地以逗号分隔的形式写入文件fw。并在末尾添加换行符"\n"。
  14. count = 0:重置计数器count为0。
  15. info = {}:清空字典info

读取名为'inf.in'的文件中的数据,将每一行按冒号分割成两部分,并将第一部分作为字典的键,第二部分作为对应键的值。当读取4行数据后,将姓名、手机号、身份证号和居住地以逗号分隔的形式写入到名为'inf.out'的文件中。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的微信机器人派森框架的代码示例,你可以根据需要进行修改和优化: ```python import itchat from threading import Thread from queue import Queue class WechatBot: def __init__(self): self.msg_queue = Queue() self.bot = itchat.new_instance() self.bot.auto_login(hotReload=True) self.bot.run(blockThread=False) self.friend_list = self.bot.get_friends() def send_msg(self, msg, to_user): self.bot.send(msg, toUserName=to_user) def handle_msg(self, msg): from_user = msg['FromUserName'] msg_type = msg['Type'] if msg_type == 'Text': content = msg['Text'] self.msg_queue.put((from_user, content)) def listen(self): @self.bot.msg_register(['Text', 'Picture', 'Recording', 'Attachment', 'Video']) def receive_msg(msg): self.handle_msg(msg) def run(self): listen_thread = Thread(target=self.listen) listen_thread.start() while True: if not self.msg_queue.empty(): from_user, content = self.msg_queue.get() # 处理消息并回复 reply = self.reply(content, from_user) self.send_msg(reply, from_user) def reply(self, msg, from_user): # 实现具体的自动回复逻辑 return "这是机器人自动回复的消息。" if __name__ == '__main__': bot = WechatBot() bot.run() ``` 以上代码实现了一个基本的微信机器人框架,它能够监听用户发送的消息并将其加入消息队列,然后在主线程中不断从消息队列中读取消息并进行处理和回复。你可以根据需要修改 `reply` 函数来实现具体的自动回复逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值