如何在Google Colab中实现CSV原始数据与加密值同文件并排?
解决方法
你的问题核心是之前的代码加密了整个文件,而现在需要对每行原始数据单独加密,再和原始数据合并到同一CSV。用pandas可以轻松实现列的操作,以下是适配Google Colab的完整代码:
1. 安装依赖并初始化加密工具
!pip install cryptography from cryptography.fernet import Fernet import pandas as pd from google.colab import files # 生成密钥并保存(只需要运行一次) key = Fernet.generate_key() f = Fernet(key) with open('filekey.key', 'wb') as filekey: filekey.write(key) # 加载密钥(后续运行可以直接加载,不用重新生成) with open('filekey.key', 'rb') as filekey: key = filekey.read() f = Fernet(key)
2. 上传原始CSV并生成带加密列的文件
# 上传你的原始CSV文件(比如nba_org.csv) uploaded = files.upload() # 读取CSV到DataFrame df = pd.read_csv('nba_org.csv') # 对Column A的每个值加密,生成Column B # 注意:加密后得到的是bytes类型,需要转成字符串才能存入CSV df['Column B'] = df['Column A'].apply(lambda x: f.encrypt(str(x).encode()).decode()) # 保存合并后的CSV output_filename = 'nba_with_encrypted.csv' df.to_csv(output_filename, index=False) # 下载结果文件 files.download(output_filename)
3. 解密验证(可选)
如果需要验证加密内容是否可正常解密,可以用以下代码:
# 上传刚才生成的带加密列的CSV uploaded = files.upload() # 读取文件 df_decrypt = pd.read_csv('nba_with_encrypted.csv') # 对Column B的加密值解密,还原成原始内容 df_decrypt['Decrypted Column'] = df_decrypt['Column B'].apply(lambda x: f.decrypt(x.encode()).decode()) # 查看结果(可以对比原始Column A和解密后的值) print(df_decrypt) # 保存解密后的验证文件(可选) df_decrypt.to_csv('nba_decrypted_verify.csv', index=False) files.download('nba_decrypted_verify.csv')
关键说明
- 之前的代码是加密整个文件的字节流,现在改为对每个单元格的内容单独加密,这样才能实现原始数据和加密值并排显示。
- 加密后的bytes类型必须转成字符串(
decode()),否则无法正常存入CSV文件;解密时需要先转回bytes(encode())再解密。 - 密钥要妥善保存,没有密钥无法解密内容。
内容的提问来源于stack exchange,提问作者daza
相关产品推荐
相关产品推荐

