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]))