[英]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'
我不确定最好的角度是分割此列表的第一个元素和最后一个元素,我想将它们分开,以便可以从中创建一个熊猫数据框。
这看起来很像固定宽度的格式文件,而不是使用定界符格式化的文件。 如果您的预分割字符串是original
, pd.read_fwf
与默认的“猜测列”推理引擎一起使用将对您的样本实际起作用:
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()])
在这种情况下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.