当值有空格时,将文件分隔为空格

2024-10-01 15:48:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个空格分隔的文本文件。前3列在值中包含空格,但它们具有固定宽度(7个字符)

例如:

A123456 B123456 C123456 12 158 325 0 14
D123456 E123456 F123456 1 147 23 711 0
G1 3456 H123456 F 23456 158 11 7 574 12589
J1234 6 K   456 L123456 1458 2 0.45 1 78

所需输出:

^{tb1}$

我可以和熊猫一起看这个文件吗


Tags: 宽度空格文本文件g1个字符tb1f123456a123456
2条回答

我们可以使用^{}来“将固定宽度格式化行的表读入数据帧”

df = pd.read_fwf('data.txt', colspecs='infer', header=None)

df

         0        1        2                   3
0  A123456  B123456  C123456     12 158 325 0 14
1  D123456  E123456  F123456      1 147 23 711 0
2  G1 3456  H123456  F 23456  158 11 7 574 12589
3  J1234 6  K   456  L123456    1458 2 0.45 1 78

如果框架的其余部分是空间分隔的,则列3可以是空间上的^{}

df = pd.read_fwf('data.txt', colspecs='infer', header=None)
# Replace 3 with new columns
df = df.drop(3, axis=1).join(df[3].str.split(expand=True), rsuffix='_x')
# Rename columns
df.columns = range(len(df.columns))

df

         0        1        2     3    4     5    6      7
0  A123456  B123456  C123456    12  158   325    0     14
1  D123456  E123456  F123456     1  147    23  711      0
2  G1 3456  H123456  F 23456   158   11     7  574  12589
3  J1234 6  K   456  L123456  1458    2  0.45    1     78

data.txt

A123456 B123456 C123456 12 158 325 0 14
D123456 E123456 F123456 1 147 23 711 0
G1 3456 H123456 F 23456 158 11 7 574 12589
J1234 6 K   456 L123456 1458 2 0.45 1 78

您可以使用以下任何一种:

data = pd.read_csv('data.txt',
                   sep=";|:|,",
                   header=None,
                   engine='python')

或者使用read_fwf

df = pd.read_fwf('data.txt', colspecs='infer', header=None)

这将在新列中写入每个值。希望这能有所帮助

相关问题 更多 >

    热门问题