python - 如何散列 csv 文件中的特定列?
问题描述
我正在尝试对第 2 列和第 8 列进行哈希处理,但我最终对整个文件进行了哈希处理。我的代码有什么问题?
import csv
import hashlib
with open('UserInfo.csv') as csvfile:
with open('UserInfo_Hashed.csv', 'w') as newfile:
reader = csv.DictReader(csvfile)
for r in reader:
hashing = hashlib.sha256((r['Password']).encode('utf-8')).hexdigest()
newfile.write(hashing + '\n')
解决方案
由于您的代码仅显示您尝试对Password
列进行哈希处理,因此以下代码仅对Password
列进行哈希处理。
import csv
import hashlib
with open('UserInfo.csv') as csvfile:
with open('UserInfo_Hashed.csv', 'w') as newfile:
reader = csv.DictReader(csvfile)
for i, r in enumerate(reader):
# writing csv headers
if i is 0:
newfile.write(','.join(r) + '\n')
# hashing the 'Password' column
r['Password'] = hashlib.sha256((r['Password']).encode('utf-8')).hexdigest()
# writing the new row to the file with hashed 'Password'
newfile.write(','.join(r.values()) + '\n')
您的代码的问题在于这一行newfile.write(hashing + '\n')
,因为它只将散列密码写入文件(没有其他列)。此外,您没有将 CSV 标头写入新文件。
我强烈建议使用Pandas
:
import pandas as pd
import hashlib
# reading CSV input
df = pd.read_csv('UserInfo.csv')
# hashing the 'Password' column
df['Password'] = df['Password'].apply(lambda x: \
hashlib.sha256(x.encode('utf-8')).hexdigest())
# writing the new CSV output
df.to_csv('UserInfo_Hashed.csv', index=False)
推荐阅读
- excel - 根据索引范围选择行excel
- nuxt.js - 在安全页面上刷新页面后,使用 laravel 护照的 Nuxt js 重定向到登录页面
- node.js - Salesforce Rest API - 将值插入查找字段
- c# - 重复启动和停止 Worker Service
- javascript - 为什么 HTML SVG 六边形 onClick “hitbox” 是矩形的?
- python - ModuleNotFoundError:将 Python 3.5 升级到适用于 Raspberry Pi 3 的 Python 3.7 后没有名为“PIL”的模块
- swift - RealityKit – 存储实体并从 URL 异步加载场景
- r - 润滑数据框中月份和小时的过滤器
- python - VScode 扩展:CODE RUNNER 和 PYTHON PREVIEWER 不使用我选择的解释器
- swift - 到 Mono 的 Swift 应用程序可选链接