CSV保存身份证后再打开后4位0000的解决办法

本文介绍了一种解决CSV文件中身份证号码显示异常的方法。在处理超过10万条包含身份证号码的数据时,发现重新打开CSV后,身份证号码后四位变成了0。原因是CSV将文本格式误读为科学计数法。通过在身份证号码前添加单引号,可以避免这一问题,确保数据正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:如果csv导出的数据将导入数据库中,无须进行处理,数据库会自动处理。如果为了查看则需要处理。

1、数据库中导出大量数据,包括身份证号码,条数超过10W+。

2、新建CSV空文档,设置单元格格式位文本。

3、复制粘贴数据至CSV,身份证号能正常显示,保存关闭文档。

4、重新打开CSV表格,发现身份证后4位都是0。

问题原因:重新打开后CSV将原来的文本格式视作科学计数法,导致18位的身份证号码不能正常显示。

如何解决?

网上处理的方法很多,我这里只记录一种,亲测有效。

思路就是把身份证那列变成文本,在身份证前面或者后面加字符或者符号。

比如在身份证前面加单引号

1、C列为身份证列,新增一D列,在新列上面输入 ="‘"&C1。

2、把鼠标放在D1单元格的右小角,当光标变成+的时候往下拉就实现了在单元格文字数字前加上同样的字符。

 

效果如下:

虽然丑点,但是能解决问题。。。

好的,我会尽力回答你的问题。 针对你的问题,我可以提供以下的思路: 1. 实现数据库表的设计 你可以使用Python中的SQLite3来实现数据库表的设计。在SQLite3中,可以使用CREATE TABLE语句来创建表格,例如: ```python import sqlite3 # 连接数据库 conn = sqlite3.connect('students.db') # 创建学生表 conn.execute('''CREATE TABLE STUDENT (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, GENDER CHAR(10), ID_CARD CHAR(18), DEPARTMENT CHAR(50), CLASS CHAR(50), MAJOR CHAR(50), HOMETOWN CHAR(50), PHONE CHAR(20), EMAIL CHAR(50), QQ CHAR(20));''') # 关闭数据库连接 conn.close() ``` 2. 实现学生信息的添加功能 针对学生信息添加的功能,你可以使用Python的input函数来实现单个录入,使用CSV库来实现批量录入。 下面是单个录入的示例代码: ```python import sqlite3 # 连接数据库 conn = sqlite3.connect('students.db') # 获取用户输入 id = input("请输入学号:") name = input("请输入姓名:") gender = input("请输入性别:") id_card = input("请输入身份证号:") department = input("请输入院系:") class_name = input("请输入班级:") major = input("请输入专业:") hometown = input("请输入籍贯:") phone = input("请输入手机:") email = input("请输入E-mail:") qq = input("请输入QQ:") # 插入数据 conn.execute(f"INSERT INTO STUDENT (ID, NAME, GENDER, ID_CARD, DEPARTMENT, CLASS, MAJOR, HOMETOWN, PHONE, EMAIL, QQ) \ VALUES ('{id}', '{name}', '{gender}', '{id_card}', '{department}', '{class_name}', '{major}', '{hometown}', '{phone}', '{email}', '{qq}');") # 提交事务 conn.commit() # 关闭数据库连接 conn.close() ``` 对于批量录入,你可以使用CSV库来读取CSV文件中的数据,并将其插入到数据库中。 下面是批量录入的示例代码: ```python import csv import sqlite3 # 连接数据库 conn = sqlite3.connect('students.db') # 打开CSV文件 with open('students.csv', 'r') as csvfile: # 读取CSV文件 csvreader = csv.reader(csvfile) # 跳过表头 next(csvreader) # 循环插入数据 for row in csvreader: # 获取学生信息 id = row[0] name = row[1] gender = row[2] id_card = row[3] department = row[4] class_name = row[5] major = row[6] hometown = row[7] phone = row[8] email = row[9] qq = row[10] # 插入数据 conn.execute(f"INSERT INTO STUDENT (ID, NAME, GENDER, ID_CARD, DEPARTMENT, CLASS, MAJOR, HOMETOWN, PHONE, EMAIL, QQ) \ VALUES ('{id}', '{name}', '{gender}', '{id_card}', '{department}', '{class_name}', '{major}', '{hometown}', '{phone}', '{email}', '{qq}');") # 提交事务 conn.commit() # 关闭数据库连接 conn.close() ``` 3. 实现数据的校验 对于数据的校验,你可以在录入数据之前进行判断。例如,可以使用正则表达式来检查学号、身份证号、手机号等信息的正确性。 下面是实现学号、身份证号、手机号检查的示例代码: ```python import re # 校验学号 def check_id(id): # 学号为8数字 if re.match(r'^\d{8}$', id): return True else: return False # 校验身份证号 def check_id_card(id_card): # 身份证号为18数字 if re.match(r'^\d{18}$', id_card): return True else: return False # 校验手机号 def check_phone(phone): # 手机号为11数字 if re.match(r'^\d{11}$', phone): return True else: return False ``` 在录入数据时,可以在用户输入数据之后,调用上述函数进行校验。如果数据不符合要求,则提示用户重新输入。 最后,对于数据的保存和查询,你可以使用SQLite3提供的INSERT和SELECT语句来实现。例如: ```python # 插入数据 conn.execute(f"INSERT INTO STUDENT (ID, NAME, GENDER, ID_CARD, DEPARTMENT, CLASS, MAJOR, HOMETOWN, PHONE, EMAIL, QQ) \ VALUES ('{id}', '{name}', '{gender}', '{id_card}', '{department}', '{class_name}', '{major}', '{hometown}', '{phone}', '{email}', '{qq}');") # 查询数据 result = conn.execute("SELECT * FROM STUDENT;") for row in result: print(row) ``` 以上就是针对你提出的问题的回答,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值