Py学习  »  Python

如何跳过正则表达式[Python]中的第一个空格匹配?

Maheswarha Rajagopal • 3 年前 • 1471 次点击  

我正在使用pandas'read_csv'函数读取非csv格式的文件行。它不包含“,”(逗号)以便我将其用作分隔符。它有不同间距的空格。下面这行就是一个例子:

Power Output 12(25%)   24(50%)  12(25%)

我想用下面的方法把它们提取出来 pandas.read_csv(sep='') 通过使用正则表达式,我不确定具体如何实现。我知道我可以用空格来分隔它们,但那会分开的 Power Output 作为两个不同的专栏。我想要一个正则表达式方法,在这个方法中,我可以匹配与间距无关的所有空格,但跳过它找到的第一个匹配。

我希望稍后在pandas数据框中有以下输出:

第1列 第2列 第3列 第4列
功率输出 12(25%) 24(50%) 12(25%)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130377
 
1471 次点击  
文章 [ 2 ]  |  最新文章 3 年前
vasia
Reply   •   1 楼
vasia    3 年前

你的代码使用 sep='' (空字符串)。你想用 sep='\s+' (regex表示空白)。

如果您想了解更多详细信息,请参阅read_csv的文档: https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

mozway
Reply   •   2 楼
mozway    3 年前

可以使用后跟数字的空格作为分隔符。为此,请使用前瞻性正则表达式:

df = pd.read_csv(..., sep='\s+(?=\d)', engine='python')

输出:

              0        1        2        3
0  Power Output  12(25%)  24(50%)  12(25%)

可选正则表达式,由任何不后跟非数字的空格组拆分: '\s+(?!\D)'