python选项卡分隔的检索列和删除空行

python选项卡分隔的检索列和删除空行,python,tab-delimited,Python,Tab Delimited,我有一个以制表符分隔的文本文件,它由两列组成,类似于: Apple123 2 Orange933 2 Banana33334 2 底部可能有空行。我怎样才能: 1.去掉空行,然后 2.是否写入仅包含第一列的文件 我现在的问题是,如果我使用line.strip(),那么该行由一个长度为10(例如第一行)而不是2的列表组成。如果我使用csv.reader(…,方言=excel选项卡),那么我就不能使用strip(),所以我不能去掉空行。您可以使用Python的基本字符串操作(str.sp

我有一个以制表符分隔的文本文件,它由两列组成,类似于:

Apple123    2
Orange933   2
Banana33334 2
底部可能有空行。我怎样才能: 1.去掉空行,然后 2.是否写入仅包含第一列的文件


我现在的问题是,如果我使用line.strip(),那么该行由一个长度为10(例如第一行)而不是2的列表组成。如果我使用csv.reader(…,方言=excel选项卡),那么我就不能使用strip(),所以我不能去掉空行。

您可以使用Python的基本字符串操作(
str.split
等等)来实现这一点:


这应该可以做到:

with open(infilename) as infile, open(outfilename) as outfile:
    for line in infile:
        line = line.strip()
        if line:
            outfile.write("{}\n".format(line.split("\t")[0]))

通常情况下,对于内嵌中的行,最好只使用
@mgilson good point,edited。我似乎永远也记不起默认的文件迭代器是
readlines
。它比这更深
readlines()
返回一个列表。另一方面,您正在懒洋洋地读取文件。换句话说,
readlines()
预先读取整个文件,而
iter\uuu
则不读取。@mgilson哦,是的-我假设readlines是一个生成器,但这种行为更有意义。是时候重新阅读
文件了,我想:PYou可以使用
xreadlines
来获得一个生成器,但这有点难看<代码>对于内嵌中的行是最好的。
with open(infilename) as infile, open(outfilename) as outfile:
    for line in infile:
        line = line.strip()
        if line:
            outfile.write("{}\n".format(line.split("\t")[0]))