繁体   English   中英

通过最后出现的空格python解析字符串列表

[英]Parsing a list of string by the last occurring space 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'

我不确定最好的角度是分割此列表的第一个元素和最后一个元素,我想将它们分开,以便可以从中创建一个熊猫数据框。

这看起来很像固定宽度的格式文件,而不是使用定界符格式化的文件。 如果您的预分割字符串是originalpd.read_fwf与默认的“猜测列”推理引擎一起使用将对您的样本实际起作用:

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

但我认为它是安全的-或者至少更明确-指定哪些列宽直接,无论是通过widthscolspecs

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()])

在这种情况下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM