簡體   English   中英

如何通過python中的字典按名稱獲取值

[英]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無關)。

另外兩點:

  • 將您的身份驗證密鑰發布到clearbit可能不是一個好主意
  • 在csv文件中發布人員的姓名和職稱也可能不是一個好主意,除非您已將所有這些數據整理好。

根據該問題,有兩件事:

  1. 從clearbit返回的數據中提取域
  2. 與熊貓合作

  1. Clearbit API返回字典。 您可以簡單地做:

像這樣:

data = clearbit.NameToDomain.find(name=n)
print(data) # Dictionary
print(data['domain']) # Domain value
  1. 與熊貓一起工作時,您無需循環處理數據

使用申請

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM