我目前正在尝试创建一个程序,根据时间戳对日志进行排序。日志的格式如下:
@ 2014 00:05:34 Jason "login" 0.01
@ 2014 00:10:34 Jason "firefox" 0.01
#server crashed
@ 2014 00:11:54 Jason "logoff" 0.01
我正在从计算机上名为log.1和log.2的文件中读取这些日志。你知道吗
我的计划是首先删除所有以“#”开头的行,因为注释的行不需要排序。。。除非有更好的方法。你知道吗
为了删除所有以“#”开头的行,我的计划是使用列表理解。到目前为止,我掌握的情况如下:
def main():
Logs = []
getLogs(Logs)
sortLogs(Logs)
def getLogs(L):
Log1 = sys.argv[1]
Log2 = sys.argv[2]
L1 = read(Log1)
L2 = read(Log2)
L.append(L1)
L.append(L2)
def sortLogs(L):
sLog = [i for i in L if i.startswith('@')]
print(sLog)
def read(fName):
return open(fName, "r").readlines()
main()
不幸的是,我得到的错误是“AttributeError:'list'对象没有属性'startswith'”。有人能告诉我为什么会出现这个错误或者我的技术不起作用吗?你知道吗
我在Python IDE中也做了以下工作,而且效果很好:
>>> newlist = ['@test','new','#no','pleasework']
>>> finallist = [x for x in newlist if x.startswith('@')]
>>> finallist
['@test']
请考虑以下一小段代码:
首先我有两张单子
然后我将创建一个新列表,并像您在代码中所做的那样附加上述两个:
现在,我正在打印新列表中第一个元素的类型。你知道吗
上面写着
<type 'list'>
,这就是你的问题所在。新列表中有两个列表,这就是startswith()
不适合您的原因。你知道吗那么,解决办法是什么?用
extend()
替换append()
,就可以了。你知道吗相关问题 更多 >
编程相关推荐