如果csv中包含某个单词,如何从该行中删除该行?

2024-09-27 09:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,看起来像这样:

    2014-6-06 08:03:19, 439105, 1053224, Front Entrance
    2014-6-06 09:43:21, 439105, 1696241, Main Exit
    2014-6-06 10:01:54, 1836139, 1593258, Back Archway
    2014-6-06 11:34:26, 845646, external, Exit 
    2014-6-06 04:45:13, 1464748, 439105, Side Exit

我想知道如果一行包含“外部”这个词,怎么删除它?在

我在网上看到另一个post,它解决了一个非常相似的问题,但我不完全理解。。。在

我试着用这样的方法(正如链接文章中所解释的那样):

^{pr2}$

文本文件只包含一个单词“external”,但它不起作用。。。。我不明白为什么。在

结果是程序会运行输出.txt将生成,但不会发生任何更改,并且不会取出带有“external”的行。在

如果有区别的话,我会使用Windows和python3.4。在

很抱歉,如果这看起来是一个非常简单的问题,但我是python新手,如果在这方面有任何帮助,将不胜感激,谢谢!!在


Tags: 文件csv方法链接main文章exitback
3条回答

将输出重定向到新文件。它会给你每一行,除了那些包含“外部”的

import sys
import re

f = open('sum.csv', "r")
lines = f.readlines()

p = re.compile('external')

for line in lines:
    if(p.search(line)):
        continue
else:
    sys.stdout.write(line)

如果您可以使用python之外的其他工具,grep的工作方式如下:

grep file.csv "some regex" > newfile.csv

只提供与正则表达式匹配的行,而:

^{pr2}$

除了匹配正则表达式的行之外,提供所有内容

看起来您在拆分行之后正在获取第一个元素。这将给你一个日期,根据你的CSV文件的例子。在

相反,您可能想要的是(再次假设示例始终是这样工作的)是获取第三个元素,因此如下所示:

csv_domain = line.split(',')[2]

但是,正如其中一条评论所说,这不一定是傻瓜。假设每个单元格都没有逗号。根据您的示例,这可能是一个安全的假设,但通常在处理CSV文件时,我建议使用Python csv module。在

相关问题 更多 >

    热门问题