python从包含NA的文本中删除行

时间:2013-10-19 04:01:23

标签: python

我的数据位于http://people.stern.nyu.edu/ja1517/data/marketing.data,我已将其保存为marketing.data.txt

我想删除包含NA的行。我写了一个6行的python脚本,但它没有用。

任何人都可以指出我的错误吗?

import re
f = open('marketing.data.txt')
g = open('marketing_complete.txt', 'w')
for line in f:
    if re.search('NA', line) is None:
        g.write(line)

我知道这没有用,因为我在命令行尝试了以下操作。

grep 'NA' marketing_complete.txt | wc -l

返回3 ...... :(

4 个答案:

答案 0 :(得分:3)

您不需要re来执行此操作:

f = open('marketing.data.txt')
g = open('marketing_complete.txt', 'w')
for line in f:
    if 'NA' not in line:
        g.write(line)

最好使用上下文管理器打开文件:

with open('marketing.data.txt') as f:
   with open('marketing_complete.txt', 'w') as g:
       for line in f:
           if 'NA' not in line:
               g.write(line)

答案 1 :(得分:3)

你可以grep它 -

grep -v NA marketing.data.txt > marketing_complete.txt

答案 2 :(得分:3)

如果你已经在捣蛋,那就去做:

grep -v NA marketing.data.txt > marketing_complete.txt

'-v'选项会反转搜索,因此只打印匹配的行。

答案 3 :(得分:1)

对于你的if语句,请尝试

if 'NA' not in line: