繁体   English   中英

如何通过数字和空格使read_csv更灵活

[英]How to make read_csv more flexibile with numbers and whitespaces

我想用Pandas读取txt.file ,问题是数字的分隔符/分隔符和之后的最少两个空白。

我已经尝试过类似于此代码( 如何使熊猫的分隔符read_csv更灵活地使用wrt空格? ):

pd.read_csv("whitespace.txt", header=None, delimiter=r"\s+")

仅在空白或更多的情况下才有效。 因此,我将其调整为以下代码。

delimiter=r"\d\s\s+"

但这在看到两个或更多个空格时将我的数据框分开了,但是我严格要求在它之前紧跟着至少两个空格之前的数字,有人知道如何解决它吗?

我的数据如下所示:

I am an example of a dataframe
I have Problems to get read
100,00
So How can I read it
20,00

所以第一行应该是: I am an example of a dataframe I have Problems to get read 100,00然后是第二行: So HOw can I read it 20,00

我可以这样尝试。

在尝试将文本文件解析为数据框之前,请先对其进行操作,如下所示:

import pandas as pd
import re

f = open("whitespace.txt", "r")
g = f.read().replace("\n", " ")

prepared_text = re.sub(r'(\d+,\d+)', r'\1@', g)

df = pd.DataFrame({'My columns':prepared_text.split('@')})
print(df)

这给出了以下内容:

                                          My columns
0  I am an example of a dataframe I have Problems...
1                         So How can I read it 20,00
2 

我想只要输入文件不是太大就足够了,但是使用re模块和替换可以给您所需的控制权。

(\\ d +,\\ d +)括号标记了我们要匹配的组。 我们基本上是在您的文本文件中匹配您的任何号码。 然后,我们使用\\ 1,它被称为对匹配组的反向引用,在指定替换项时将被引用。 因此\\ d +,\\ d +被\\ d +,\\ d + @代替。

然后,我们使用插入的字符作为分隔符。

这里有一些很好的例子:

https://lzone.de/examples/Python%20re.sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM