将数据从json提取到CSV

nzk0hqpo  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(176)

我正在处理opensea响应文件json,尝试获取有关nft的信息
json文件https://paste.pythondiscord.com/yazaxipiwe完整的json文件https://cdn.discordapp.com/attachments/303906514266226689/1028843885906116658/opensea.json
我得到的问题与提取性状数据,性状有daydynamic数据一样,一些有空性状数据和一些有4至8性状数据
如何提取这样的特质

name    link    traits_type(eye)    traits_type(fur)    traits_type(mouth)
APE 0   https://lh3.google.com  3d eye  red open-mouth 
APE1    https://lh3.google.com  brown   robot   moster
APE2    https://lh3.google.com  white   green   big teeth 
APE3    https://lh3.google.com  monster eye brown   sharp teeth

CSV link
代码

file = json.load(open('opensea.json'))
name.append(file['name'])
link.append(file['image_url'])

但是如何获得特征数据呢?

8nuwlpux

8nuwlpux1#

它可能需要使用for-loop将其转换为带有{type:value}的字典

data = {}
for item in file['traits']: 
    key = item['trait_type']
    value = item['value'] 

    data[key] = value

    print(key, value)

稍后您可以创建行(使用.get(),您可以在项不存在时设置默认值)

row = [
     file['name'], 
     file['image_url'], 
     data.get('Eye', ''), 
     data.get('Fur', ''), 
     data.get('Mouth', '')
]

并添加到列表

all_rows.append(row)

然后将所有内容转换为DataFrame
第一个
结果:

name           fur         eyes                     mouth
0   None         Robot       X Eyes                Discomfort
1   None         Robot   Blue Beams                      Grin
2   None         Robot           3d           Bored Cigarette
3   None       Cheetah        Bored                Tongue Out
4   None  Golden Brown       Closed                 Phoneme L
5   None         Brown       X Eyes               Dumbfounded
6   None         Cream        Crazy                     Bored
7   None  Golden Brown        Angry                     Bored
8   None        Zombie        Robot                     Bored
9   None         Brown       Sleepy                Small Grin
10  None           Dmt     Eyepatch                     Bored
11  None    Dark Brown    Bloodshot  Bored Unshaven Cigarette
# ...
sauutmhj

sauutmhj2#

如果只需要1个特征,则可以使用

[i['value'] for i in file['traits'] if i['trait_type'] == 'the trait type you need'][0]

使用for循环for i in file['traits']创建一个包含i['value']的列表(如果i['trait_type']是您需要的)。
否则,请考虑

for i in file['traits']:
    if i['trait_type'] == 'the_trait':
        list_for_the_trait.append(i['value'])
    ...

相关问题