[英]Change encoding type when parsing RData file into Python using Rdata package
对于一个任务,我目前正在尝试将 RData 文件导入到 python 中,其中包含文本内容和内容的类别。 我查看了 web 并在 python 中找到了允许我执行此操作的 RData package。 然而 package 假定文本的编码是 ASCII,而实际上它是 UTF-8。 我查看了文档,但找不到更改此标准假定编码的方法。
这是我尝试使用的代码:
import rdata
parsed = rdata.parser.parse_file("news_dataset.rda")
converted = rdata.conversion.convert(parsed)
converted_df = pd.DataFrame(converted.get("df_final"))
运行此程序时会生成以下错误(我已将路径的不相关部分排除在外):
conversion\_conversion.py:266: UserWarning: Unknown encoding. Assumed ASCII.
warnings.warn("Unknown encoding. Assumed ASCII.")
由于这种错误的转换,我得到了奇怪的句子,例如:
b'Ad sales boost Time Warner profit\n\nQuarterly profits at US media giant TimeWarner jumped 76% to $1.13bn (\xc2\xa3600m) for the three months to December, from $639m year-earlier.
我假设这个方法应该能够处理这个问题,但我不知道如何在转换方法中使用。
这里有人可以帮助我吗? 提前致谢!
[编辑] 我也尝试过 pyreadr,但是在导入模块时出现以下错误:
ImportError Traceback (most recent call last)
<ipython-input-1-007a02a03c5d> in <module>
----> 1 import pyreadr
2
3 result = pyreadr.read_r("news_dataset.rda")
~\AppData\Roaming\Python\Python37\site-packages\pyreadr\__init__.py in <module>
----> 1 from .pyreadr import read_r, list_objects, write_rds, write_rdata, download_file
2 from .custom_errors import PyreadrError, LibrdataError
3
4 __version__ = "0.4.4"
5
~\AppData\Roaming\Python\Python37\site-packages\pyreadr\pyreadr.py in <module>
8 import pandas as pd
9
---> 10 from ._pyreadr_parser import PyreadrParser, ListObjectsParser
11 from ._pyreadr_writer import PyreadrWriter
12 from .custom_errors import PyreadrError
~\AppData\Roaming\Python\Python37\site-packages\pyreadr\_pyreadr_parser.py in <module>
15 pass
16
---> 17 from .librdata import Parser
18 from .custom_errors import PyreadrError
19
ImportError: DLL load failed: the specified module could not be found
显然这是由于 pyreadr 是用 python 2.0 而不是 python 3.0(这是我正在使用的版本)编写的。 使用2to3你应该能够进行这种转换。 但它还没有为我工作。
如果不是强制使用 RData package,您可以使用pyreadr
完成相同的任务。 pyreadr
读取.rda 文件并默认采用 UTF-8 编码。
pip install pyreadr
假设“df_final”为key,其值为dataframe,
import pyreadr
result = pyreadr.read_r("news_dataset.rda")
# Print keys
print(result.keys())
# Assuming "df_final" is one of the keys,
# load it into a pandas dataframe
df = results["df_final"]
有关 pyreadr 的更多信息: https://github.com/ofajardo/pyreadr
我是rdata
package 的作者。
convert
function 接受关键字参数default_encoding
,您可以使用它来指定未在字符串中显式声明时使用的编码。
如果显式声明了编码但错误,您也可以使用force_default_encoding
。
您的代码将是:
import rdata
parsed = rdata.parser.parse_file("news_dataset.rda")
converted = rdata.conversion.convert(parsed, default_encoding="utf8")
converted_df = pd.DataFrame(converted.get("df_final"))
如果您对 package 有进一步的疑问,请随时在 Github 存储库中展开讨论。 我会收到通知,通常可以在同一天回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.