您可以使用read_csv
与分隔符][
必须由\
转义。然后replace
列和价值观,通过dropna
删除行与所有NaN
:
import pandas as pd
from pandas.compat import StringIO
temp=u"""[Header1][Header2][Header3][HeaderN]
[=======][=======][=======][=======]
[Value1][Value2][Value3][ValueN]
[AnotherValue1][ValuesCanBeEmpty][][]"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), sep="\]\[", engine='python')
df.columns = df.columns.to_series().replace(['^\[', '\]$'],['',''], regex=True)
df = df.replace(['^\[', '\]$', '=', ''], ['', '', np.nan, np.nan], regex=True)
df = df.dropna(how='all')
print (df)
Header1 Header2 Header3 HeaderN
1 Value1 Value2 Value3 ValueN
2 AnotherValue1 ValuesCanBeEmpty NaN NaN
print (df.columns)
Index(['Header1', 'Header2', 'Header3', 'HeaderN'], dtype='object')
感谢你为这个。我正在研究熊猫解析器(https://github.com/pandas-dev/pandas/blob/v0.19.2/pandas/io/parsers.py#L494-L646),我无法正确地分类任何东西。 .. – Guillaume
Wau,不错的主意;) – jezrael
你可以在每一行的开头加'''和'['到每一行的结尾?那么就没有必要更换了。 –