从 Python 中的 csv 中提取关键字
Extracting keywords from csv in 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)
这会将包含关键字的整个 URL 行写入新的 csv 文件。但是我怎样才能只提取和写入关键字,而不是整个 URL?我不想提取整个 http://www.example.com/search/iphone+charger.html
,而只是提取 charger
。
此外,如何在我正在编写的新 csv 文件中保留其他两个对应的列 Date
和 Views
?现在,它只提取 URL
列。
我正在寻找一个包含以下列的新 csv 文件:
"Date", "Keyword", "Views"
作为替代方案,这可以在没有 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
我有一个包含三列的逗号分隔的 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 文件中保留其他两个对应的列 Date
和 Views
?现在,它只提取 URL
列。
我正在寻找一个包含以下列的新 csv 文件:
"Date", "Keyword", "Views"
作为替代方案,这可以在没有 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