【问题标题】:Python 3 | Converting complex list data into groupings within a list?蟒蛇 3 |将复杂的列表数据转换为列表中的分组?
【发布时间】:2016-11-12 00:12:56
【问题描述】:

我正在从自己的 facebook 个人资料中抓取数据,但在尝试将数据插入 sqlite3 数据库时卡住了。

我已经抓取了我的朋友列表并将结果组织成一个 python 列表,但至少可以说这个 python 列表是混乱的。

我会告诉你我的意思:

['Jody Ann Elizabeth Lill\n98 mutual friends\nFriends\nGeorgia Gee Smith\n60 mutual friends\nFriends\nShannon Kirk\n52 mutual friends\nFriends\nNatasha Byars-Marsden\n4 mutual friends\nFriends\nLorrae Moakes\n36 mutual friends\nFriends\nAdam AP Kirk\n98 mutual friends\n7 new posts\nFriends\nLittle Mark Jr.\n5 mutual friends\nFriends\nMark Duffy\nFriends with Nat Hodgson\nFriends\nEdward McConville\n40 mutual friends\n3 new posts\nFriends', 'Tanisha Barlow\n2 mutual friends\n10 new posts\nFriends\nCatherine Firth\n4 mutual friends\nFriends\nJayde Woods\n56 mutual friends\n4 new posts\nFriends\nScott Goodall\n43 mutual friends\n4 new posts\nFriends\nNikki Harris\n43 mutual friends\n4 new posts\nFriends\nDebbie Goodall\n85 mutual friends\n6 new posts\nFriends\nConrick Junior\n48 mutual friends\n1 new post\nFriends\nBoris Bighead\n5 mutual friends\nFriends']

上面的列表中只有两个项目!但我需要将他们组织成正确的组,所以我需要:

['Jody Ann Elizabeth Lill\n98 mutual friends\nFriends\n', 'Georgia Gee Smith\n60 mutual friends\nFriends\n', 'Shannon Kirk\n52 mutual friends\nFriends\n', 'Natasha Byars-Marsden\n4 mutual friends\nFriends\n', 'Lorrae Moakes\n36 mutual friends\nFriends\n', 'Adam AP Kirk\n98 mutual friends\n7 new posts\nFriends\n', 'Little Mark Jr.\n5 mutual friends\nFriends\n', 'Mark Duffy\nFriends with Nat Hodgson\nFriends\n', 'Edward McConville\n40 mutual friends\n3 new posts\nFriends', 'Tanisha Barlow\n2 mutual friends\n10 new posts\nFriends\n', 'Catherine Firth\n4 mutual friends\nFriends\n', 'Jayde Woods\n56 mutual friends\n4 new posts\nFriends\n', 'Scott Goodall\n43 mutual friends\n4 new posts\nFriends\n', 'Nikki Harris\n43 mutual friends\n4 new posts\nFriends\n', 'Debbie Goodall\n85 mutual friends\n6 new posts\nFriends\n', 'Conrick Junior\n48 mutual friends\n1 new post\nFriends\n', 'Boris Bighead\n5 mutual friends\nFriends']

如您所见,每个分组的项目数不相等:

(这组中有 3 个项目)

'Jody Ann Elizabeth Lill\n98 mutual friends\nFriends\n',

对比

(而这组中有 4 个项目)

'Conrick Junior\n48 mutual friends\n1 new post\nFriends\n', 

我确实想过创建一个元组列表,但由于组内的项目数量不均匀,我认为这肯定会失败。

让您了解我真正想要的最终结果;

我需要这样组织我的列表:

[ ('Jody Ann Elizabeth Lill', '98 mutual friends', 'Friends'),
'Georgia Gee Smith', '60 mutual friends', 'Friends',
'Conrick Junior', '48 mutual friends', '1 new post,' 'Friends', 
'Shannon Kirk', '52 mutual friends', 'Friends' ]

然后我希望遍历它们并将它们插入到数据库表中,如下所示:

+---------------------------------+-----------------+--------------------------+------------------------+---------+
|        name                          | new_posts | mutual_friends    | already_friends |id         |
+---------------------------------+-----------------+--------------------------+------------------------+---------+
|Jody Ann Elizabeth Lill |                       |98 mutual friends| Friends                 |1          |
+---------------------------------+-----------------+--------------------------+------------------------+---------+
|Georgia Gee Smith        |                       |60 mutual friends | Friends                 |2          |
+---------------------------------+-----------------+--------------------------+------------------------+---------+
|Adam AP Kirk                  |7 new posts|98 mutual friends | Friends                |3          |
+---------------------------------+-----------------+--------------------------+------------------------+---------+

如何转换我的列表,以便我可以继续使用该组织列表到数据库中?

【问题讨论】:

    标签: list python-3.x tuples


    【解决方案1】:

    当您从朋友列表中抓取时,您将在每种情况下都有一个共同的 `\nFriends' 字符串。我能想到的最简单的方法是应用以下内容:

    friends_str = 'Jody Ann Elizabeth Lill\n98 mutual friends\nFriends\nGeorgia Gee Smith\n60 mutual friends\nFriends\nShannon Kirk\n52 mutual friends\nFriends\nNatasha Byars-Marsden\n4 mutual friends\nFriends\nLorrae Moakes\n36 mutual friends\nFriends'
    friends_array = friends_str.split('\nFriends')
    for friend in friends_array:
        columns = (friend+'\nFriends').split('\n')
        add_to_db(columns)
    

    希望对你有用。

    【讨论】:

    • 它适用于正确拆分它们,但我没有尝试将不同大小的组放入数据库中的问题,因为有些是 3 列,有些是 4 列,我必须对它们进行排序按他们每个人的列数..
    猜你喜欢
    • 2022-06-17
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2020-01-26
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多