【发布时间】:2021-11-12 20:06:38
【问题描述】:
问题总结
- 我正在尝试使用 Pandas 在 Python 中加载 .txt 文件。
- .txt 文件使用 |字段之间的分隔符
- 在双引号“”之间捕获每个字段作为字符串:例如"i_am_a_string"
- 问题是某些字段的撇号用双引号表示。例如"I"m_not_a_valid_string" (应该是"I'm_not_a_valid_string")
示例文件
为了演示我的问题,我创建了一个测试文件,在 vi 中编辑时如下:
"Name"|"Surname"|"Address"|"Notes"^M
"Angelo"|""|"Kenton Square 5"|"Note 1"^M
"Angelo"|""|"Kenton’s ^M
Sqr5"|"note2"^M
"Angelo"|""|"Kenton"s ^M
Road"|"Note3"^M
加载数据
要加载此文件,我在 Jupyter 笔记本中运行以下命令:
test = pd.read_csv('test.txt', sep ='|')
它会像下面的屏幕截图一样加载文件:
问题
在文件中的示例“note2”和“Note3”中,我希望解决 2 个问题:
note2 问题
加载文件时如何去掉^M?即在 Jupyter 中加载时,如何从地址列中删除“\r\r\n”。 “note2”示例应该在地址列中加载如下:
- 我应该在使用 bash 命令加载文件之前删除这些文件还是
- 我应该在使用 Python 在 Jupyter 中加载后删除这些吗?
- 您能否建议在每种情况下执行此操作的代码以及您会推荐哪一个(以及为什么)?
注意3问题
如何用撇号替换字符串表达式中的双引号?在这里它将它打破到另一行是不正确的。这应该加载到第 2 行,如下所示:
"Note3" 示例是一个复合示例,因为它在字符串中也有 "^M" 字符,但在这里我有兴趣用撇号替换双引号,这样它就不会将它分解到另一行破坏正在加载。
感谢您的帮助,非常感谢。
安杰洛
【问题讨论】:
-
对这两个任务都使用
.str.replace()。 -
谢谢@DYZ。这将解决 note2 问题,但在 Note3 中它会中断到另一行。在加载文件之前我该怎么做?
标签: python pandas csv jupyter-notebook