gpt4 book ai didi

Python按字段对文本文件进行排序

转载 作者:行者123 更新时间:2023-11-28 20:51:01 25 4
gpt4 key购买 nike

我在按特定字段对文本文件中的数据进行排序时遇到了一些问题。以后可能会通过多个字段。 .txt 是几千行代码。我是 python 的新手,所以我的代码可能有点乱。例如,这是我将从中读取的文本文件:

stuff
123 1200 id-aaaa stuart@test.com
322 1812 id-wwww machine-switch@test.com
839 1750 id-wwww gary2-da@test.com
500 0545 id-aaaa abc123@test.com
525 1322 id-bbbb zyx321@test.com

我的代码如下:

filelist = open("info.txt").readlines()
splitlist = list()

class data:
def __init__(self, eventName, time, identity, domain):
self.evenName = eventName
self.time = time
self.identity = identity
self.domain = domain

for line in filelist:
filelist = list.split(', ')
splitlist.append(filelist)

for column in splitlist:
if (len(column) > 1): #to skip the first line
eventName = column[0].strip()
time = column[1].strip()
identity = column[2].strip()
domain = column[3].strip()

我想按身份对 .txt 文件逐行排序,然后按时间排序。我看到这可以通过 python 教程中的类来完成,所以我正在尝试走那条路。请指教。谢谢!

最佳答案

with open("info.txt") as inf:
data = []
for line in inf:
line = line.split()
if len(line)==4:
data.append(line)

data.sort(key=lambda s:(s[2],s[1]))

如果你想变得更高级一些,

from collections import namedtuple
Input = namedtuple('Input', ('name', 'time', 'identity', 'domain'))

with open("info.txt") as inf:
inf.next() # skip header
data = [Input(*(line.split()) for line in inf]

data.sort(key=lambda s:(s['identity'],s['time']))

如果您真的非常想使用一个类,请尝试:

import time

class Data(object):
def __init__(self, event, time_, identity, domain):
self.event = event
self.time = time.strptime(time_, "%H%M")
self.identity = identity
self.domain = domain

with open("info.txt") as inf:
data = []
for line in inf:
try:
data.append(Data(*(line.split()))
except TypeError:
# wrong number of arguments (ie header or footer)
pass

data.sort(key=lambda s:(s.identity,s.time))

关于Python按字段对文本文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10972925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com