擅长:python、mysql、java
<p>与@tdelaney的代码相同的思想使其更加简洁:</p>
<pre><code>from itertools import takewhile
import re
import pandas as pd
def make_dataframe(filename):
with open(filename) as fp:
div = []
headers = list(takewhile(
lambda x: not x.startswith(';;-') or div.append(x), fp))
colspecs = [m.span() for m in re.compile("-+").finditer(div[0])]
headers = [
re.sub(" +", " ", " ".join(hl[lo : hi] for hl in headers)).strip()
for lo, hi in colspecs]
d = pd.read_fwf(fp, header = None,
colspecs = [(lo - 2, hi - 2) for lo, hi in colspecs])
d.columns = headers
return d
print(make_dataframe('test.txt'))
</code></pre>