python 读取文件 将 encoding='gbk' 转为 encoding='utf-8' 中文字符集不要乱码
时间: 2023-12-03 16:02:13 浏览: 114
你可以使用Python的io模块来实现文件编码转换。具体步骤如下:
1. 打开文件并指定编码为gbk:
```
with open('filename.txt', encoding='gbk') as f:
content = f.read()
```
2. 将文件内容编码为utf-8:
```
content_utf8 = content.encode('utf-8')
```
3. 将转换后的utf-8内容写入文件:
```
with open('filename_utf8.txt', 'wb') as f:
f.write(content_utf8)
```
这样,你就可以将gbk编码的文件转换为utf-8编码的文件,并且中文字符集不会乱码。
相关问题
帮我写一段python代码 用于 读取桌面qaz目录下的以_t0结尾的excel文件内容 写入至mysql(要求1: 将表头"日期" 改为 "transaction_date",将表头"市场" 改为 "trade_type",将表头"交易金额" 改为"amount" ; 要求2: 将 encoding='gbk' 转为 encoding='utf-8' 中文字符集不要乱码)
好的,你可以参考下面的代码实现:
```python
import os
import pymysql
from openpyxl import load_workbook
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='database', charset='utf8mb4')
cursor = conn.cursor()
# 读取桌面qaz目录下以_t0结尾的excel文件
path = os.path.expanduser('~/Desktop/qaz')
for file in os.listdir(path):
if file.endswith('_t0.xlsx'):
file_path = os.path.join(path, file)
wb = load_workbook(file_path, read_only=True)
# 读取第一个工作表
ws = wb[wb.sheetnames[0]]
# 将表头改为指定名称
headers = ['transaction_date', 'trade_type', 'amount']
for i, cell in enumerate(ws[1]):
cell.value = headers[i]
# 将内容编码转换为utf-8
content_utf8 = b''
for row in ws.iter_rows(min_row=2):
row_utf8 = ','.join([str(cell.value) for cell in row]).encode('utf-8') + b'\n'
content_utf8 += row_utf8
# 将内容写入MySQL数据库
cursor.execute('INSERT INTO mytable (transaction_date, trade_type, amount) VALUES (%s, %s, %s)', row)
conn.commit()
# 关闭数据库连接
cursor.close()
conn.close()
```
其中,需要将代码中的`password`、`database`和`mytable`替换为你的MySQL数据库信息。
帮我写一段python代码 用于 读取D盘qaz目录下的以_t0结尾的文件内容 并根据表头字段将内容将其写入至mysql对应表字段中(要求1: 将表头"日期" 改名为 "transaction_date",将表头"市场" 改名为 "trade_type",将表头"交易金额" 改名为"amount" ; 要求2: 将 encoding='gbk' 转为 encoding='utf-8' 中文字符集不要乱码)
好的,以下是代码示例:
```python
import os
import pandas as pd
import pymysql
# 连接 MySQL 数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8mb4')
# 读取 D 盘 qaz 目录下以 _t0 结尾的文件
file_list = [f for f in os.listdir('D:\\qaz') if f.endswith('_t0')]
for file_name in file_list:
# 读取文件内容
df = pd.read_csv(f'D:\\qaz\\{file_name}', encoding='gbk')
# 修改表头字段名
df = df.rename(columns={'日期': 'transaction_date', '市场': 'trade_type', '交易金额': 'amount'})
# 将数据写入 MySQL 数据库
df.to_sql('table_name', conn, if_exists='append', index=False)
# 关闭数据库连接
conn.close()
```
注意,这段代码需要修改的地方有:
1. 数据库连接信息:需要根据实际情况修改 host、user、password、database 等参数。
2. 表名:需要将 `table_name` 修改为实际使用的表名。
3. 字符集:需要根据实际情况修改原始文件的字符集,本例中使用的是 `gbk`,如果原始文件是其他字符集需要相应修改。
4. 文件路径:需要将 `D:\\qaz` 修改为实际文件所在的路径。
希望对你有帮助!
阅读全文