如何将.txt格式文件导入 Python 中,具有常规列结构(但不可靠的分隔符,如制表符、逗号等)



我正在使用疾病控制中心(CDC(原始文本文件(.txt( - 没有标题 - 并希望导入数据以在Python中使用。CDC 按列为字段提供密码本:

- Columns 1-6       - FILLER space (blank space, unused)
- Column 7          - version field (A or S)
- Columns 8-9       - FILLER space (blank space, unused)
- Column 10         - numeric flag    (1 or 2)
- Columns 11-14     - numeric field for year
- Columns 15-16     - numeric field for month
- Columns 17-20     - FILLER space (blank, unused)
- Columns 21-24     - numeric field for time
- Columns 25     - numeric field for day of the week
- ...
- Column 439 - text field
- Column 440 - numeric field
- Columns 441-3050 - FILLER space

以下是原始数据的第一行示例(减去前六列空白列(:

A  2201701    10462        11                1                                 36116      1                                 1  3033    0833                               99110300  3         05206021                        N00000000N    6034.84   178 NNNNNNXXY03 2222124N4222NN1                 1              M 07  2016     2504325  25043    1130051 NYYY           P038                                    058     1

这是一个早期的尝试:

CHS2 = pd.read_csv(r'C:CDCFetalDeaths2017_FET_Analysis_Public_US_20190219.txt', header=None)
CHS2.info()

这会导致以下结果:

>    <class 'pandas.core.frame.DataFrame'>
>    RangeIndex: 49170 entries, 0 to 49169
>    Data columns (total 1 columns):
>    0    49170 non-null object
>    dtypes: object(1)
>    memory usage: 384.2+ KB

作为一个仍在学习Python的人,我正在尝试发现如何导入这些数据。标准分隔符(例如逗号(在这里似乎不合适。我还没有在堆栈溢出上遇到类似的问题。有人可能会有什么建议?另外,如何仅导入特定列并格式化它们?将不胜感激!

以下是将文件的行转换为具有一致分隔符的方法:

with open(r'C:UsersjfryaOneDriveDesktopCOVID19US_countiesCDCFetalDeaths2017_FET_Analysis_Public_US_20190219.txt', 'r') as f:
lines = f.read().splitlines()

data = 'n'.join([','.join([s for s in line.split() if s]) for line in lines])

最新更新