【问题标题】:Split elements in a list by character按字符拆分列表中的元素
【发布时间】:2017-01-17 12:46:39
【问题描述】:

我有一个列表,最初是一个数据框,现在看起来像这样:

[['asfsd|ksjdsf|jskks','asfsd|ksjdsf|jskks','asfsd|ksjdsf',
'asfsd|ksjdsf|jskks','asfsd|ksjdsf|jskks']]

我不知道如何拆分 | 之间的每个元素以创建一个包含所有元素的新列表。

我做了以下事情:

import pandas as pd
df= pd.read_csv('movie_metadata.csv')
palabras_c= df['plot_keywords']
data_palabras= pd.DataFrame(palabras_c).dropna() 
d=data_palabras.T
d2=d.values.tolist()

l =[]
for i in range(len(d2)):
  x= "".join(d2[i].split("|"))
  l.append(x)
  print l

但我得到一个AttributeError

Traceback (most recent call last)
<ipython-input-186-a57adb3fa668> in <module>()
   l =[]
   for i in range(len(d2)):
   --->  x= "".join(d2[i].split("|"))
         l.append(x)


    AttributeError: 'list' object has no attribute 'split'´

【问题讨论】:

  • 使用 d2=d.values.tolist()[0]
  • 完成!伟大的!谢谢
  • 欢迎老兄!继续编码!
  • 将 x= "".join(a[i].split("|")) 更改为 x="".join(a[i].replace('|'," ") )

标签: python list split


【解决方案1】:

试试这个

a = [['asfsd|ksjdsf|jskks','asfsd|ksjdsf|jskks','asfsd|ksjdsf', 'asfsd|ksjdsf|jskks''asfsd|ksjdsf|jskks']][0]
l =[]
for i in range(len(a)):
    x= "".join(a[i].split("|"))
    l.append(x)

print l

输出:

['asfsdksjdsfjskks', 'asfsdksjdsfjskks', 'asfsdksjdsf', 'asfsdksjdsfjskksasfsdksjdsfjskks']

【讨论】:

  • 它给了我同样的错误l =[] for i in range(len(d2)): ---&gt; x= "".join(d2[i].split("|")) l.append(x) AttributeError: 'list' object has no attribute 'split'
  • 列表没有拆分方法。所以我们必须从中提取字符串..您可以复制/粘贴我的代码并运行它。你不会得到任何错误
  • @Crist 我没有收到任何错误。我似乎您更改了变量名称,让我检查您正在尝试的代码。将您的代码作为编辑发布在您的问题中
  • @Crist 你正确使用了这个 a= [你的列表][0],我从这个中选择第一个元素。这也是一个列表。这就是您收到该错误的原因。
  • @Crist 我没有熊猫。如果您在 d2=d.values.tolist() 的嵌套列表中获得 [[ your list]] ,则使用 d = d2[0] 选择其中的第一个元素。后面的部分工作得很好。您尝试在 d2 进行检查?尝试 print d2
【解决方案2】:

list.split('|') 不工作吗?你试过什么?
另外,单项分隔符似乎有一个小错误

【讨论】:

    【解决方案3】:
    l=['asfsd|ksjdsf|jskks','asfsd|ksjdsf|jskks','asfsd|ksjdsf','asfsd|ksjdsf|jskks','asfsd|ksjdsf|jskks']
    
    word_list = []
    
    for w in l:
        for k in w.split('|'):
            word_list.append(k)
    
    print word_list
    

    输出:

    ['asfsd', 'ksjdsf', 'jskks', 'asfsd', 'ksjdsf', 'jskks', 'asfsd', 'ksjdsf', 'asfsd', 'ksjdsf', 'jskks', 'asfsd', 'ksjdsf', 'jskks']
    

    【讨论】:

      猜你喜欢
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2018-03-12
      相关资源
      最近更新 更多