使用 Rdata 包将 RData 文件解析为 Python 时更改编码类型
Change encoding type when parsing RData file into Python using Rdata package
对于我目前正在尝试将 RData 文件导入 python 的作业,其中包含文本内容和内容类别。我浏览了整个网络,在 python 中找到了允许我执行此操作的 RData 包。但是,该包假定文本的编码是 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 .13bn (\xc2\xa3600m) for the three months to December, from 9m year-earlier.
我假设 this method 应该能够处理这个,但我不知道如何在转换方法中使用。
这里有人可以帮助我吗?提前致谢!
[编辑]
我也尝试过 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 包,您可以使用 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
包的作者。
convert
函数接受关键字参数 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"))
如果您对该软件包有进一步的疑问,请随时在 Github 存储库中进行讨论。我会收到通知,通常可以在同一天回复。
对于我目前正在尝试将 RData 文件导入 python 的作业,其中包含文本内容和内容类别。我浏览了整个网络,在 python 中找到了允许我执行此操作的 RData 包。但是,该包假定文本的编码是 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 .13bn (\xc2\xa3600m) for the three months to December, from 9m year-earlier.
我假设 this method 应该能够处理这个,但我不知道如何在转换方法中使用。
这里有人可以帮助我吗?提前致谢!
[编辑] 我也尝试过 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 包,您可以使用 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
包的作者。
convert
函数接受关键字参数 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"))
如果您对该软件包有进一步的疑问,请随时在 Github 存储库中进行讨论。我会收到通知,通常可以在同一天回复。