【问题标题】:How to export German umlauts into excel file using Python如何使用 Python 将德语变音符号导出到 excel 文件中
【发布时间】:2023-04-05 10:13:01
【问题描述】:

我遇到了以下问题,我还没有在这里找到解决方案。 我正在使用 Python 2.7,我喜欢将 Pandas 系列导出到带有变音符号(“ä”、“ü”、“ü”)的 excel 文件

例如对于 Python 2.7:

#Python 2.7###############

# -*- coding: iso-8859-15 -*-

import pandas as pd
import csv
city = ['München', 'Nürnberg', 'Würzburg']
result = pd.Series(city)
result.to_csv(result.to_csv('Umlauts.csv', sep= ',' , encoding='iso-8859-15')

如果我用 Excel 打开它,它只适用于 csv,即使结果在同一行和同一列中

0,München
1,Nürnberg
2,Würzburg

问题: 将这个系列框架导出到 Excel 工作表中的解决方案是什么

A1 | A2
1  |  München
2  |  Nürnberg
3  |  Würzburg

我可以转移这个解决方案来创建名为“München.xls”的文件吗?

感谢您的帮助!

最好的

【问题讨论】:

  • CSV 不是“Excel 文件”。如果您想生成实际的 .xls 文件,请使用执行此操作的众多库之一(例如 openpyxl)。

标签: python python-2.7 csv export-to-excel export-to-csv


【解决方案1】:

Panads DataFrame.to_csv 不支持方言参数。您必须使用支持 excel 方言的csv 模块。

免责声明

Excel 存在 csv 问题。使用 UTF-8 编码编写 csv,并在文件内容前面添加 utf8 bom b"\0xEF\0xBB\0xBF"。 Excel 将很好地读取此文件。

但是

Excel 无法保存 utf8 编码的 csv 文件。即使您打开一个 utf8 csv,然后按保存而不进行修改,excel 也会将其重新编码为 iso-8859-15,并在无法编码 unicode 字符的位置插入 ?-s。

换句话说:使用 excel 编辑 csv 文件在大多数情况下会导致数据丢失!

【讨论】:

  • * OS X 上的 Excel 可能仍然会失败……
  • 你最后的说法似乎过于苛刻了——如果你能用键盘在Excel中输入一个字符,它应该可以保存!
  • @Mark "Should"... :) 我不知道 Excel 是否确实存在将“外来”字符导出到 CSV 的问题,但它与处理 UTF 的关系肯定非常困难-8 在 CSV...
  • @MarkRansom 只要你没有俄语键盘 :) 我想我也可以在我的匈牙利语键盘上找到一个字母,比如大写 Ű
  • @ALL:实际上,我喜欢避免编写 csv 文件。我想直接使用 xlrw 包将结果导出到 mac excel 文件中。据我所知,它应该使用 xlrw 包工作,例如´u"München`。但我无法解决它。有什么想法吗?感谢您的帮助!
【解决方案2】:

您应该覆盖您的sys 设置并使用pandas.DataFrame.to_excel()

# Import modules
import sys
reload(sys)
sys.setdefaultencoding('UTF8')
import pandas as pd

# Your code
city = ['München', 'Nürnberg', 'Würzburg']
result = pd.Series(city)

# Transform Series to DataFrame in order to use to_excel()
d = result.to_frame()

# Specify writer
writer = pd.ExcelWriter('output.xlsx', options={'encoding':'utf-8'})

# Write the frame to excel
d.to_excel(writer,'Sheet1')

# Save the file
writer.save()

这应该可行。

【讨论】:

  • 哦,他们有to_excel。好吧,他们说得对,csv 的 excel 方言与任何 csv 相差甚远 :)
【解决方案3】:

hereherehere 所写,您可以在导出到 xls 时使用其他引擎。
当其他解决方案没有时,这对我有用:

  1. 安装xlsxwriterpip install XlsxWriter
  2. 导入import xlsxwriter
  3. 使用此引擎而不是默认引擎编写
from pandas import ExcelWriter
writer = pd.ExcelWriter('file.xlsx', engine='xlsxwriter')
df.to_excel(writer,'Sheet1')
writer.save()

其中df 是您要导出的DataFrame。

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 2016-01-21
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    相关资源
    最近更新 更多