Извлечение ключевых слов из csv в Python

У меня есть 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)

Это записывает в новый CSV-файл всю строку URL-адреса, содержащую ключевое слово. Но как я могу извлечь и написать только ключевое слово, а не весь URL-адрес? Я не хочу извлекать все http://www.example.com/search/iphone+charger.html, а просто charger.

А также, как я могу сохранить два других соответствующих столбца Date и Views в новом CSV-файле, который я пишу? На данный момент он извлекает только столбец URL.

Я хочу получить новый файл csv со столбцами:

"Date", "Keyword", "Views"

person Notna    schedule 13.02.2018    source источник


Ответы (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
person Martin Evans    schedule 13.02.2018