之前因为SQL导出csv文件后身份证号变成科学计数法苦恼很久,找了也试了很多种方法,总结如下。
1.CONCAT
SELECT CONCAT('\t',str) FROM xxx;
这个方法对于csv来说是有效的,能够把身份证号强制识别为文本,但是这个方法的问题是它改变了身份证号码的长度,在一些严格要求格式或者要引用身份证号的情境下不适用。
2.EXCEL自带的从外部获取数据功能
在这个功能中,可以指定身份证号所在列的格式为文本,只是一个文件设置一次比较麻烦。
3.做一个python小程序
????????(1)用conda之类的工具创建一个虚拟环境
conda create -n id2str python==3.9.7
????????(2)下载下列包
pip install pandas
pip install openpyxl
pip install easygui
pip install pyinstaller
pandas用于读写文件;openpyxl作为pandas的引擎;easygui作为一个伪界面;pyinstaller负责打包exe程序。
????????(3)代码
talk is cheap, show me the code.
import easygui as g
import pandas as pd
file = g.fileopenbox('打开包含身份证号的csv文件')
data = pd.read_csv(file)
print('正在打开文件')
cols = list(data.columns)
id_col = g.choicebox('选择身份证所在列', choices=cols)
data[id_col] = data[id_col].astype('str')
data.to_excel(file[:-4]+'.xlsx', index=False, encoding='utf_8_sig')
print('文件转换完毕')
????????(4)打包exe
?以本文的文件名为例,用pycharm的terminal键入
pyinstaller -F .\id2str.py -i .\ai17p-19wzz-001.ico
在dist文件夹中得到exe程序,大小为32M,后续可以反复使用。
?4.小结
对格式无要求的可以参考CONCAT,只是少数时候使用的可以用EXCEL,需要经常使用的可以用上述python代码写一个小程序。
|