python脚本到键的日期范围从文件范围内并重定向输出



我有一个输入文件1.csv

42200000000099920160613000000 column=h:profile, timestamp=1465780825878, value=[{"weight":100.0,"centroidLatitude":23.723663502974482,"centroidLongitude":58.812344445144724,"centroidUncertainity":1.384228745747496E11,:{"Wed21":100.0,"Wed20":100.0,"Wed23":100.0,"Wed22":100.0,"Wed14":100.0,"Wed13":100.0,"Wed16":100.0,"Wed15":100.0,"Wed18":100.0,"Wed17":100.0,"Wed19":100.0
42200000000099920160613000000 column=h:profile, timestamp=1465780825878, value=[{"weight":100.0,"centroidLatitude":23.723663502974482,"centroidLongitude":58.812344445144724,"centroidUncertainity":1.384228745747496E11,:{"Wed21":100.0,"Wed20":100.0,"Wed23":100.0,"Wed22":100.0,"Wed14":100.0,"Wed13":100.0,"Wed16":100.0,"Wed15":100.0,"Wed18":100.0,"Wed17":100.0,"Wed19":100.0
42200000000099920160614000000 column=h:profile, timestamp=1465780825878, value=[{"weight":100.0,"centroidLatitude":23.723663502974482,"centroidLongitude":58.812344445144724,"centroidUncertainity":1.384228745747496E11,:{"Wed21":100.0,"Wed20":100.0,"Wed23":100.0,"Wed22":100.0,"Wed14":100.0,"Wed13":100.0,"Wed16":100.0,"Wed15":100.0,"Wed18":100.0,"Wed17":100.0,"Wed19":100.0,
42200000000099920160615000000 column=h:profile, timestamp=1465780825878, value=[{"weight":100.0,"centroidLatitude":23.723663502974482,"centroidLongitude":58.812344445144724,"centroidUncertainity":1.384228745747496E11,:{"Wed21":100.0,"Wed20":100.0,"Wed23":100.0,"Wed22":100.0,"Wed14":100.0,"Wed13":100.0,"Wed16":100.0,"Wed15":100.0,"Wed18":100.0,"Wed17":100.0,"Wed19":100.0

我只想从20160613到20160614。

我编写的程序,我需要在代码中输入开始日期和结束日期,而不是我应该要求用户输入开始日期和结束日期,然后将输出重定向到文件

import re
import datetime
# please input from console i have used fixed values
lbound_date = datetime.datetime.strptime("20160613", "%Y%m%d")
rbound_date = datetime.datetime.strptime("20160614", "%Y%m%d")

t= open("1.csv")
p = re.compile(r'^[0-9]{15}(?P<date>[0-9]{8})')
out = []

for line in t:
    s = p.match(line)
if s:
    sdate_str = s.group("date")
    # sort the dates to get only ones between range
    sdate = datetime.datetime.strptime(sdate_str, "%Y%m%d")
    if sdate >= lbound_date and sdate <= rbound_date:
        out.append(line)

for lineout in out:
    print (lineout)

凹痕是错误的,因此您的循环无济于事。最后一行仅在最后一行(s是最后一行的匹配):

修复:从第二行正确缩进:

for line in t:
    s = p.match(line)
    if s:
        sdate_str = s.group("date")
        # sort the dates to get only ones between range
        sdate = datetime.datetime.strptime(sdate_str, "%Y%m%d")
        if sdate >= lbound_date and sdate <= rbound_date:
            out.append(line)

(对不起,这个微不足道的答案)

最新更新