![](/img/trans.png)
[英]How can I tell Pandas read_csv to use multiple whitespaces as separators but not single whitespaces?
[英]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 + @代替。
然后,我们使用插入的字符作为分隔符。
这里有一些很好的例子:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.