如何在python中将字符串或字典分成多行?

时间:2015-12-07 02:43:31

标签: python string dictionary

我做了一本字典:

{
    "PerezHilton": {
        "name": "Perez Hilton",
        "following": [
            "tomCruise",
            "katieH",
            "NicoleKidman"
        ],
        "location": "Hollywood, California",
        "web": "http://www.PerezH...",
        "bio": [
            "Perez Hilton is the creator and writer of one of the most famous websites",
            "in the world. And he also loves music - a lot!"
        ]
    },
    "tomCruise": {
        "name": "Tom Cruise",
        "following": [
            "katieH",
            "NicoleKidman"
        ],
        "location": "Los Angeles, CA",
        "web": "http://www.tomcruise.com",
        "bio": [
            "Official TomCruise.com crew tweets. We love you guys!",
            "Visit us at Facebook!"
        ]
    }
}

我希望它返回一个字符串,所以我添加了str()。 但我不知道如何像线条一样打破它。 我需要的是:

----------
PerezHilton
name: Perez Hilton
location: Hollywood, California
website: http://www.PerezH... 
bio:
Perez Hilton is the creator and writer of one of the most famous websites
in the world. And he also loves music - a lot!
following: ['tomCruise', 'katieH', 'NicoleKidman']
----------
tomCruise
name: Tom Cruise
location: Los Angeles, CA
website: http://www.tomcruise.com
bio:
Official TomCruise.com crew tweets. We love you guys!
Visit us at Facebook!
following: ['katieH', 'NicoleKidman']
----------

我应该将其更改为字符串,然后打破它吗?或者将它们从字典中删除并将其作为字符串? 顺便说一下,我使用了python 3

1 个答案:

答案 0 :(得分:2)

试试这个:

_dict = {
    "PerezHilton": {
        "name": "Perez Hilton",
        "following": [
            "tomCruise",
            "katieH",
            "NicoleKidman"
        ],
        "location": "Hollywood, California",
        "web": "http://www.PerezH...",
        "bio": [
            "Perez Hilton is the creator and writer of one of the most famous websites",
            "in the world. And he also loves music - a lot!"
        ]
    },
    "tomCruise": {
        "name": "Tom Cruise",
        "following": [
            "katieH",
            "NicoleKidman"
        ],
        "location": "Los Angeles, CA",
        "web": "http://www.tomcruise.com",
        "bio": [
            "Official TomCruise.com crew tweets. We love you guys!",
            "Visit us at Facebook!"
        ]
    }
}    

def str_generator(key, value):
    if isinstance(value, str):
        return key +': ' + value
    elif key == 'bio':
        return key + ':\n' + '\n'.join(value)
    else:
        return key + ': ' + str(value)


a = ""


for key, value in _dict.items():
    a += ('----------\n' + key + '\n')
    for _key, _value in value.items():
        a += (''.join(str_generator(_key, _value)) + '\n')


print(a)

输出:

----------
tomCruise
location: Los Angeles, CA
following: ['katieH', 'NicoleKidman']
name: Tom Cruise
bio:
Official TomCruise.com crew tweets. We love you guys!
Visit us at Facebook!
web: http://www.tomcruise.com
----------
PerezHilton
location: Hollywood, California
following: ['tomCruise', 'katieH', 'NicoleKidman']
name: Perez Hilton
bio:
Perez Hilton is the creator and writer of one of the most famous websites
in the world. And he also loves music - a lot!
web: http://www.PerezH...