【问题标题】:Extracting keywords from csv in Python在 Python 中从 csv 中提取关键字
【发布时间】:2018-02-13 12:16:50
【问题描述】:

我有一个逗号分隔的 csv 文件,包含三列:

"Date", "URL", "Views" 

我正在尝试在URL 列中提取包含特定关键字的某些行,例如单词charger

import pandas as pd

keywords = {"charger"}

df = pd.read_csv("original_file.csv", sep=",")

listMatchURL = []

for i in range(len(df.index)):
    if any(x in df['URL'][i] for x in keywords):
        listMatchURL.append(df['URL'][i])

output = pd.DataFrame({'URL': listMatchURL})
output.to_csv("new_file.csv", index=False)

这会将包含关键字的整个 URL 行写入一个新的 csv 文件。但是如何只提取和写入关键字,而不是整个 URL?我不想提取整个http://www.example.com/search/iphone+charger.html,而只是提取charger

另外,如何在我正在编写的新 csv 文件中保留另外两个对应的列 DateViews?目前,它仅提取 URL 列。

我正在寻找一个包含以下列的新 csv 文件:

"Date", "Keyword", "Views"

【问题讨论】:

    标签: python pandas csv extract keyword


    【解决方案1】:

    作为替代方案,这可以在没有 Pandas 的情况下完成,如下所示:

    import csv
    
    keywords = {"charger"}
    
    with open('original_file.csv', newline='') as f_input, open('new_file.csv', 'w', newline='') as f_output:
        csv_input = csv.reader(f_input)
        csv_output = csv.writer(f_output)
    
        header = next(csv_input)
        csv_output.writerow(['Date', 'Keyword', 'Views'])
    
        for date, url, views in csv_input:
            for keyword in keywords:
                if keyword in url:
                    csv_output.writerow([date, keyword, views])
                    break       # Remove if multiple keywords per url are allowed
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      相关资源
      最近更新 更多