Python:如何用逗号分隔字符串值来拆分对象变量中不同大小的列表



我是python和数据分析的初学者,我有以下问题无法解决!

假设我有以下类型的变量,对象有以下内容:

0                                             [Julian Sims]
1                                          [Bernard Gillis]
2         [Damien Bell, Desmen Noble, Herman Seagers, La...
3         [Stacie Philbrook, Christopher Ratliffe, Antho...
4         [Danielle Imani Jameison, Maurice Eugene Edmon...
5         [Rebeika Powell, Kayetie Melchor, Misty Nunley...
6         [Greg Griego, Sara Griego, Zephania Griego, Ja...
7                                                        []
8                                                        []
9                                           [Deshaun Jones]
10                                        [Demetrius Davis]
...
...
...

有超过200000行,并且它们具有不同的大小。

我想做的是看看是否有任何名字被重复;显示重复的位置,并显示同一行中的所有其他名称。

我试着把每个名字一行存储在一个新的变量中,以便稍后分组,看看是否有重复的名字,但我不确定如何!

我尝试了下面的代码,但结果不是我想要的

names = []
row = str(name_list).split(",")
for x in row :
names.append(x)

但我得到了以下信息:

['0                                             [Julian Sims]n1                                          [Bernard Gillis]n2         [Damien Bell',
' Desmen Noble',
' Herman Seagers',
' La...n3         [Stacie Philbrook',
' Christopher Ratliffe',
' Antho...n4         [Danielle Imani Jameison',
' Maurice Eugene Edmon...n5         [Rebeika Powell',
' Kayetie Melchor',
' Misty Nunley...n6         [Greg Griego',
' Sara Griego',
' Zephania Griego',
' Ja...n7                                                        []n8                                                        []n9                                           [Deshaun Jones]n10                                        [Demetrius Davis]

我正在尝试创建一个图表来显示谁相互连接,如果有重复的

如果有更好的做事方法,请告诉我。

非常感谢


假设name_list是整个文本,我将使用

lines = [line[line.find('[')+1:line.find(']')].split(',') for line in name_list]

以获取每行中的名称作为列表列表。这会找到左括号,然后将字符串从该括号切到右括号,并用逗号分隔内容
要访问第四行中的名称(如name_list中那样从零开始索引(,

>>>lines[4]
['Danielle Imani Jameison', 'Maurice Eugene Edmon...']

我不确定我是否理解你要去哪里,但如果你再解释一点,我很乐意帮忙。

编辑:

name_list = '''0                                             [Julian Sims]
1                                          [Bernard Gillis]
2         [Damien Bell, Desmen Noble, Herman Seagers, La...]
3         [Stacie Philbrook, Christopher Ratliffe, Antho...]
4         [Danielle Imani Jameison, Maurice Eugene Edmon...]
5         [Rebeika Powell, Kayetie Melchor, Misty Nunley...]
6         [Greg Griego, Sara Griego, Zephania Griego, Ja...]
7                                                        []
8                                              [Sara Griego]
9                                           [Deshaun Jones]
10                                        [Demetrius Davis]'''.split('n')
lines = [[name.strip() for name in line[line.find('[')+1:line.find(']')].split(',')] for line in name_list]
names = [name.strip() for line in lines for name in line if name]
seen = set()
dups = set(name for name in names if name in seen or seen.add(name))
if len(dups) == 0: print("No duplicates.")
info = {name:[] for name in dups}
for i in range(len(lines)):
for name in dups:
if name in lines[i]: info[name].append(i)
print(info)

我稍微修改了您提供的数据样本,使其包含一个重复的数据,并为每行添加了括号(我假设真实数据是这样做的(。这段代码打印一个包含任何重复名称的对象,以及它们出现的行。示例数据的结果是{'Sara Griego': [6, 8]},这似乎就是您想要的?如果您希望使用两个名称列表而不是两个行号,则可以将外部for循环更改为:

for line in lines:
for name in dups:
if name in line: info[name].append(line)

如果这里有什么东西与你的想法不符,请告诉我。

最新更新