0

Python 处理问题——去掉日期时间模式:

我有一些来自 GSM 单元的数据,格式如下:

+CMGL: 1,"REC READ","+111111111111","13/05/25,05:15:16+04",25-05-13,05:15:20, 0.668
+CMGL: 2,"REC READ","+111111111111","13/05/25,12:15:14+04",25-05-13,12:15:20, 0.875
+CMGL: 3,"REC READ","+111111111111","13/05/25,10:15:15+04",25-05-13,10:15:20, 0.679

..

数据作为单个字符串缓冲区检索,因此最初都在一行上。我可以使用 DATA.replace(a,b) 对数据进行排序和剥离,但我无法删除前 4 个逗号分隔的组,即

+CMGL: 1,"REC READ","+111111111111","YY/MM/DD,HH:MM:SS+DELTA"

我的目标是提取数据看起来像这样(我不介意日期时间线的错误顺序) -

25-05-13, 05:15:20, 0.668
25-05-13, 12:15:20, 0.875
25-05-13, 10:15:20, 0.679

..

欢迎提出建议

4

4 回答 4

2

使用该csv模块处理分隔文件。

GSM.txt

+CMGL: 1,"REC READ","+111111111111","13/05/25,05:15:16+04",25-05-13,05:15:20, 0.668
+CMGL: 2,"REC READ","+111111111111","13/05/25,12:15:14+04",25-05-13,12:15:20, 0.875
+CMGL: 3,"REC READ","+111111111111","13/05/25,10:15:15+04",25-05-13,10:15:20, 0.679

下面的示例代码

import csv
gsm = open('gsm.txt')
for row in csv.reader(gsm):
    print row[4:]

输出

['25-05-13', '05:15:20', ' 0.668']
['25-05-13', '12:15:20', ' 0.875']
['25-05-13', '10:15:20', ' 0.679']
于 2013-05-26T23:27:09.367 回答
1

像这样的东西:

>>> strs = '+CMGL: 1,"REC READ","+111111111111","13/05/25,05:15:16+04",25-05-13,05:15:20, 0.668'
>>> ", ".join( x for x in strs.split(",")[5:] )
'25-05-13, 05:15:20,  0.668'

或者:

>>> ", ".join( strs.split(",",5)[-1].split(",") )
'25-05-13, 05:15:20,  0.668'

对于多行:

>>> strs = """+CMGL: 1,"REC READ","+111111111111","13/05/25,05:15:16+04",25-05-13,05:15:20, 0.668                                              
+CMGL: 2,"REC READ","+111111111111","13/05/25,12:15:14+04",25-05-13,12:15:20, 0.875
+CMGL: 3,"REC READ","+111111111111","13/05/25,10:15:15+04",25-05-13,10:15:20, 0.679"""
>>> 
>>> for line in strs.splitlines():     
...     print ", ".join( line.split(",",5)[-1].split(","))

25-05-13, 05:15:20,  0.668
25-05-13, 12:15:20,  0.875
25-05-13, 10:15:20,  0.679
于 2013-05-26T23:22:58.623 回答
1
data = """+CMGL: 1,"REC READ","+111111111111","13/05/25,05:15:16+04",25-05-13,05:15:20, 0.668
+CMGL: 2,"REC READ","+111111111111","13/05/25,12:15:14+04",25-05-13,12:15:20, 0.875
+CMGL: 3,"REC READ","+111111111111","13/05/25,10:15:15+04",25-05-13,10:15:20, 0.679"""

import csv
from StringIO import StringIO

for row in csv.reader(StringIO(data), skipinitialspace=True):
    print ', '.join(row[4:7])

#25-05-13, 05:15:20, 0.668
#25-05-13, 12:15:20, 0.875
#25-05-13, 10:15:20, 0.679
于 2013-05-26T23:27:47.400 回答
0

如果你能确保所有的行都是相似的格式,即前缀词的长度总是相同的。我认为最简单的方法是

line = '+CMGL: 1,"REC READ","+111111111111","13/05/25,05:15:16+04",25-05-13,05:15:20, 0.668'
line = line[59:]
于 2013-05-27T03:40:07.817 回答