用最后出现的空间python解析字符串列表

2024-05-16 13:21:00 发布

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

我有一个字符串列表,其中包含需要按最后一个或倒数第二个空格(dateTime)解析的空格。我在主字符串上尝试了split(),但问题是包含了大量用于描述数据的空格,因此我推迟使用split(/n)。样品清单见下文。你知道吗

['Origin Time       2016/04/16 01:25:00',
 'Lat.              32.753',
 'Long.             130.762',
 'Depth. (km)       12',
 'Mag.              7.3',
 'Station Code      AIC001',
 'Station Lat.      35.2976',
 'Station Long.     136.7500',
 'Station Height(m) 6',
 'Record Time       2016/04/16 01:28:06',
 'Sampling Freq(Hz) 100Hz',
 'Duration Time(s)  120',
 'Dir.              N-S',
 'Scale Factor      7845(gal)/8223790',
 'Max. Acc. (gal)   2.327',
 'Last Correction   2016/04/16 01:28:08'

我不确定最好的角度是分裂这个列表的第一个和最后一个元素,我想把它们分开,这样我就可以从中创建一个熊猫数据帧。你知道吗


Tags: 数据字符串列表datetimetime样品originlong
1条回答
网友
1楼 · 发布于 2024-05-16 13:21:00

这看起来很像固定宽度格式的文件,而不是使用分隔符格式化的文件。如果您的预拆分字符串在original中,则使用^{}和默认的“猜测列”推理引擎将实际用于您的示例:

import io, pandas as pd
df = pd.read_fwf(io.StringIO(original), header=None)

但是我认为直接指定列宽更安全或者至少更明确,不管是通过widths还是colspecs。你知道吗

In [55]: pd.read_fwf(io.StringIO(original), header=None, widths=[17, 100])
Out[55]: 
                    0                    1
0         Origin Time  2016/04/16 01:25:00
1                Lat.               32.753
2               Long.              130.762
3         Depth. (km)                   12
4                Mag.                  7.3
5        Station Code               AIC001
6        Station Lat.              35.2976
7       Station Long.             136.7500
8   Station Height(m)                    6
9         Record Time  2016/04/16 01:28:06
10  Sampling Freq(Hz)                100Hz
11   Duration Time(s)                  120
12               Dir.                  N-S
13       Scale Factor    7845(gal)/8223790
14    Max. Acc. (gal)                2.327
15    Last Correction  2016/04/16 01:28:08

当然,如果您的文件格式不一致,您可能就没有那么幸运了,必须包含一些解决方法。你知道吗

FWIW,这只是

df = pd.DataFrame([[row[:17].strip(), row[17:].strip()] for row in original.splitlines()])

在这种情况下。你知道吗

相关问题 更多 >