python - 使用 Pandas 写入 Excel 时出现意外字符
问题描述
我有一个dictionary
这样的:
film = {
'ID': [],
'Name': [],
'Run Time': [],
'Genre': [],
'link': [],
'name 2': []
}
然后我将它填充到一个 for 循环中,如下所示:
film['ID'].append(film_id)
film['Name'].append(film_name)
film['Run Time'].append(film_runtime)
film['Genre'].append(film_genre)
film['link'].append(film_link)
film['name 2'].append(film_name2)
然后我将字典转换为 Pandas DataFrame,以便将其写入.xlsx
文件。现在在我真正写它之前,我打印它来检查Run Time
列的值。一切正常:
output_df = pd.DataFrame(film).set_index('ID')
print(output_df['Run Time'])
output:
ID
102 131
103 60
104
105
Name: Run Time, dtype: object
但是,当我写它时,就像这样:
writer = ExcelWriter('output.xlsx')
output_df.to_excel(writer, 'فیلم')
writer.save()
该文件如下所示:
如您所见,'
文件中有一个额外的(单引号)字符。这个字符是不可见的。但我可以强调一下:
如果我删除它,数字变为RTL
:
所以我认为隐形字符是LTR MARK ( \u200E
)。我像这样删除它:
film['Run Time'].append(film_runtime.replace('\u200E', ''))
但什么也没发生,角色还在。
我怎样才能解决这个问题?
解决方案
您需要确保在转换为 .xlsx 文件之前将需要为数字的单元格转换为数字(通常是整数)。
在你的情况下:
film['Run Time'].append(int(film_runtime))
推荐阅读
- php - 数据库结果到 json
- mysql - MySQL:'%' 不匹配以 TAB 字符开头的文本,用于具有 utf8mb4_bin 排序规则的 TEXT 类型列
- android - 如何使用 BLE 与 iOS 中的 CheckSUM Logics 进行请求和响应的物联网设备进行交互
- google-sheets - 谷歌表 | 从一个字符串中提取多个值
- android - 在按钮单击时更新 FireStore Recycler 适配器
- html - 如何将 Discord 服务器集成到我的网站中?
- html - 如何将元素的宽度设置为其内在最大内容的 50%?
- firebase - Flutter:如何限制文档中的字段数
- java - 当我在视图中进行更改时,如何防止它执行所有这些操作?
- firebase - 我没有看到 Allprojects 存储库