[英]how to get value by name from dictionary in python
我有一個帶有公司名稱列的csv文件,我需要查找它的域名並將其存儲在公司名稱旁邊的同一csv文件中
我到目前為止使用的代碼
import pandas as pd
import clearbit
import json
clearbit.key = 'your secret key'
df = pd.read_csv("/home/vipul/Desktop/new.csv", sep=',', encoding="utf-8")
saved_column = df['Company']
i=0
for data in saved_column:
n = saved_column[i]
i = i+1
domain = clearbit.NameToDomain.find(name=n)
print(domain)
l = json.loads(domain)
print(l['domain'])
這段代碼在json中提供了域名徽標和名稱,但如何僅使用域名
但這給了錯誤
l = json.loads(domain) print(l['domain'])
錯誤:
TypeError: the JSON object must be str, not 'NameToDomain'
csv文件如下所示
Company
Accenture
AND Digital
Accenture
Kite Consulting Group
Capgemini
預期產量
Company Domain
Accenture accenture.com
AND Digital and.digital
Accenture accenture.com
Kite Consulting Group None
Capgemini capgemini.com
json看起來像
Name: Company, dtype: object
{'name': 'Accenture', 'logo': 'https://logo.clearbit.com/accenture.com', 'domain': 'accenture.com'}
{'name': 'AND Digital', 'logo': 'https://logo.clearbit.com/and.digital', 'domain': 'and.digital'}
{'name': 'Accenture', 'logo': 'https://logo.clearbit.com/accenture.com', 'domain': 'accenture.com'}
None
{'name': 'Capgemini', 'logo': 'https://logo.clearbit.com/capgemini.com', 'domain': 'capgemini.com'}
根據文檔, clearbit.NameToDomain.find(name=n)
返回一個字典,因此您可以像訪問其他任何python字典一樣訪問它的值。 您不在乎它來自json,它已為您處理。 (這個問題也與csv無關)。
另外兩點:
根據該問題,有兩件事:
像這樣:
data = clearbit.NameToDomain.find(name=n)
print(data) # Dictionary
print(data['domain']) # Domain value
使用申請
import pandas as pd
from urllib.parse import urlparse
def parse_url(x):
return 'unknown' if pd.isnull(x) else urlparse(x)[1]
df = pd.read_csv("./new.csv")
df['domain'] = df['Profile URL'].apply(parse_url)
df_new = df.loc[:, ['Company', 'domain']]
clearbit的解析器可以像這樣實現( 我沒有嘗試過此代碼,但是應該可以 ):
import clearbit
def parse_url(x):
return 'unknown' if pd.isnull(x)
data = clearbit.NameToDomain.find(name=x)
return data.get('domain', 'Default value')
此代碼從提供的CSV導入數據。 您可以改為在parse_url方法中調用clearbit API並返回適當的值。
該解決方案適用於Python3。 請以此為起點,而不是復制粘貼解決方案。
由於它是字典,因此我們可以為其分配一些默認值,並將其存儲在csv文件中,然后再將其刪除即可:)
編輯后的代碼
import pandas as pd
import clearbit
import json
clearbit.key = 'your key'
df = pd.read_csv("/home/vipul/Desktop/new.csv", sep=',', encoding="utf-8")
saved_column = df['Company'].dropna()
i=0
res = []
for data in saved_column:
n = saved_column.get(i)
print(n)
i = i+1
data = clearbit.NameToDomain.find(name=n)
if data != None:
res.append(data['domain'])
else:
res.append('domain.com')
print(res)
df['Domain'] = res
df.to_csv("/home/vipul/Desktop/new.csv",index = False, skipinitialspace=False)
print("File saved to desktop as new.csv")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.