【问题标题】:find specific vocab and extract row of csv and transform in new csv file查找特定的词汇并提取 csv 行并在新的 csv 文件中进行转换
【发布时间】:2018-11-05 10:55:44
【问题描述】:

我有csv files30,000 行列表,我想在找到特定单词后搜索这些行和列,在新的 csv 文件中写入该行。

例如:

job ,position , email , adress 

joe  ,validi ,  ceo  ,  joevalidi@yahoo.com

我想知道ceo是谁,然后将其提取并保存在不同的csv文件中。

【问题讨论】:

  • 共享示例输入和预期输出。
  • @MayankPorwal 我编辑了它
  • Mahdi,这不是他;p 根本不是您要的,但是值得展示您正在处理的最小代码和数据集!您显示的输出没有任何相关内容。

标签: python csv find transform extract


【解决方案1】:

假设这是您的输入文件test.txt,位于/Users/redwing/temp/

/Users/cat/meow/meoew
/Users/cat/meow/meoew2
/Users/dog/bow/wow

然后此脚本将输出一个文件,其中仅包含包含cat 的行。

in_fname = '/Users/redwing/temp/test.txt'
out_fname = '/Users/redwing/temp/test_output.txt'

f_out = open(out_fname, 'w+')
f_in = open(in_fname, 'r')
for content in f_in:
    if 'cat' in content:
        f_out.write(content)
f_in.close()
f_out.close()

这个解决方案的好处是所有文件都不会被读入内存,所以过滤 3000 行或 3000 万行并不重要。

PS。在您编辑之前提交了我的回复。显然,您只需将 cat 替换为 ceo )

【讨论】:

  • 我认为这不适合在本网站上做和讨论。如果人们偶然发现您的问题并发现它有用,他们会支持它。更不用说如果你接受我的或 Mayank 的回复就好了)
【解决方案2】:

你可以试试这个:使用re模块

import re

pattern = re.compile(r'ceo')
ceo_list = []

with open('managers.csv', 'r') as f:  ## where managers.csv is the file you shared above
    for i in f:
        if pattern.search(i):
            ceo_list.append(i.split(',')[0].strip())

现在,您已将所有 ceo 存储在列表 ceo_list 中。只需将其写入一个单独的文件:

with open('ceo.csv', 'w') as f:
    for item in ceo_list:
        f.write("%s\n" % item)

如果这有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2018-08-15
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多