String 将数据字符串转换为列表

String 将数据字符串转换为列表,string,list,python-2.7,String,List,Python 2.7,我在处理一些输入时遇到了一些问题。 我从日志文件中读取数据,并根据名称存储不同的值。 因此,我的输入字符串由ip、名称、时间和数据值组成。 日志行如下所示,且其间距为: 134.51.239.54 Steven 2015-01-01 06:09:01 5423 我正在使用以下代码读取值: loglines = file.splitlines() data_fields = loglines[0] # IP NAME DATE DATA for logline

我在处理一些输入时遇到了一些问题。 我从日志文件中读取数据,并根据名称存储不同的值。 因此,我的输入字符串由ip、名称、时间和数据值组成。 日志行如下所示,且其间距为:

134.51.239.54    Steven    2015-01-01 06:09:01    5423
我正在使用以下代码读取值:

loglines = file.splitlines()
    data_fields = loglines[0]  # IP NAME DATE DATA
    for loglines in loglines[1:]:
     items = loglines.split("\t")
     ip = items[0]
     name = items[1]
     date = items[2]
     data = items[3]
这很有效,但我需要将所有名称提取到一个列表中,但我还没有找到有效的解决方案

当我使用打印名称时,我得到:

Steven
Max
Paul
我确实需要一张这样的名单:

['Steven', 'Max', 'Paul',...]
可能有一个简单的解决方案,我还没有找到,但有人能帮我吗


谢谢

只需创建一个空列表,并在循环文件时添加名称

还请注意,如果该文件非常大,
file.splitlines()
可能不是最好的主意,因为它会将整个文件读入内存,然后基本上通过执行
loglines[1://code>来复制所有文件。最好使用
文件
对象本身作为迭代器。不要将
文件
用作变量名,因为它会隐藏类型

with open("some_file.log") as the_file:
    data_fields = next(the_file)     # consumes first line
    all_the_names = []               # this will hold the names
    for line in the_file:            # loops over the rest
        items = line.split("\t")
        ip, name, date, data = items # you can put all this in one line
        all_the_names.append(name)   # add the name to the list of names

或者,您可以使用
zip
map
将所有内容放在一个表达式中(使用
loglines
数据),但您不应该这样做<代码>zip(*map(lambda s:s.split('\t'),loglines[1:])[1]

谢谢您的回复,但当我使用您的代码时,我得到的每一行“无”编辑:我的坏,它工作正常