这个问题非常简单,但我从几个小时以来就没有完成它:我有一个数据文件,其中包含两列数据,由一个选项卡分隔。我想用python阅读和处理它们。allData
包含数据,但我如何访问其中的一部分?
with open( "file.txt", "r" ) as mergeData:
allData = mergeData.read()
print allData
这个问题非常简单,但我从几个小时以来就没有完成它:我有一个数据文件,其中包含两列数据,由一个选项卡分隔。我想用python阅读和处理它们。allData
包含数据,但我如何访问其中的一部分?
with open( "file.txt", "r" ) as mergeData:
allData = mergeData.read()
print allData
最灵活的方法是使用csv
模块:
import csv
with open("file.txt", "rb") as infile:
reader = csv.reader(infile, delimiter="\t")
allData = list(reader)
请注意,所有元素都是字符串。如果您想将第一列转换为 anint
并将第二列转换为 a float
,您可以执行类似的操作
allData = [(int(first), float(second)) for first,second in reader]
要将其拆分为两个浮点数列表,每列一个,zip()
请与元组解包运算符 ( *
) 一起使用:
first, second = zip(*((float(x), float(y)) for x,y in reader))
简短而简单:
with open( "file.txt", "r" ) as mergeData:
allData = [line.strip().split('\t') for line in mergeData]
csv
@TimPietzcker 提到的模块很好,但不处理 unicode。
该csv
模块是读取分隔数据字段文件的不错选择。下面创建一个列表列表,每个列表都会包含从数据文件中对应列读取的数据。它也可以很容易地适应任意数量的数据列:
import csv
NUM_COLS = 2
columns = [[] for _ in range(NUM_COLS)]
with open("datafile.txt", "rb") as infile:
for row in csv.reader(infile, delimiter="\t"):
for i, col in enumerate(row):
columns[i].append(col)
for col in columns:
print col
示例制表符分隔的输入文件:
1 5
2 6
3 7
4 8
产生的输出:
['1', '2', '3', '4']
['5', '6', '7', '8']
为什么不:
fp = open("file.txt","r")
mylist = fp.readlines() # get list of lines.
fp.close() # i forgot that line [EDIT]
for i in range(len(mylist)):
mylist[i] = mylist[i].strip() #get rid of ' ' and '\n' and such
mylist[i] = mylist[i].split('separator') # splits line into list of elements in the line
mylist 然后应该是您的行和每行中的单个元素的二维数组/列表。然后分隔符应与分隔线元素的字符或字符串交换。