0

我在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

4 回答 4

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)
于 2013-10-19T04:10:02.677 回答
3

你可以grep它 -

grep -v NA marketing.data.txt > marketing_complete.txt
于 2013-10-19T04:11:45.377 回答
3

如果您已经在 grepping,只需执行以下操作:

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

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

于 2013-10-19T04:11:49.320 回答
1

对于您的 if 语句,请尝试

if 'NA' not in line:
于 2013-10-19T04:12:36.747 回答