我有一个文件,其中包含行和列形式的符号表details.Its
。
我需要提取第一列和最后一列。
我该怎么做?
答案 0 :(得分:13)
csv模块是更简单的方法。 您可以使用此代码的任何分隔符:
import csv
def import_text(filename, separator):
for line in csv.reader(open(filename), delimiter=separator,
skipinitialspace=True):
if line:
yield line
for data in import_text('somefile.txt', '/'):
print (data)
答案 1 :(得分:4)
您使用什么类型的分隔符?也就是说,你的列分开了什么?
我假设您正在使用逗号分隔符,如下所示:
col1, col2, col3
col11, col12, col13
col21, col22, col23
col31, col32, col33
以下代码将解析它并打印每行的第一列和最后一列:
# open file to read
f = file('db.txt', 'r')
# iterate over the lines in the file
for line in f:
# split the line into a list of column values
columns = line.split(',')
# clean any whitespace off the items
columns = [col.strip() for col in columns]
# ensure the column has at least one value before printing
if columns:
print "first", columns[0] # print the first column
print "last", columns[-1] # print the last column
答案 2 :(得分:4)
解析写入文本文件的表的最方便方法是使用csv module。它支持任何分隔符,并且比手动逐行解析更方便使用。例如:
import csv
def get_first_and_last_column(filename, separator):
with file(filename, 'rb') as file_obj:
for line in csv.reader(file_obj,
delimiter=separator, # Your custom delimiter.
skipinitialspace=True): # Strips whitespace after delimiter.
if line: # Make sure there's at least one entry.
yield line[0], line[-1]
if __name__ == '__main__':
for pair in get_first_and_last_column(r'c:\temp\file.txt', ';'):
print pair
现在,如果你给它一个这样的文件:
Edgar; Alan; Poe
John; Smith
Lots; of; whitespace; here
它将产生以下输出:
('Edgar', 'Poe')
('John', 'Smith')
('Lots', 'here')
编辑:csv.reader
的自定义参数也可以作为关键字参数传递(谢谢,nosklo!)。
答案 3 :(得分:0)
根据更新,列以空格分隔。所以它会是:
rawfile = open('details.Its', 'r')
table = [line.rstrip().split() for line in rawfile.readlines()]
newtable = [[line[0]]+[line[-1]] for line in table]
print(newtable)