2014-01-16 7 views
0
a=['Business', 'Food/Clothes', 'Fun', 'Politics', 'Starting_with_Apolog', ['NNP', 'MD', 'NN', 'NNP'], ['NNP', 'NN', 'NNP'], ['PDT', 'MD', 'NN', 'NNP'], ['PRP$', 'MD', 'NN', 'NNP'], ['UH', 'MD', 'NN', 'NNP'], ['WP$', 'MD', 'NN', 'NNP'], 'end__with_ly', 'end_with_al', 'end_with_ful', 'end_with_ible', 'end_with_ic', 'end_with_ive', 'end_with_less', 'end_with_ous', 'sorry_word', 'Gender'] 

    f = open("file.csv") 
    reader = csv.reader(f) 
    headers = None 
    results = [] 
    for row in reader: 
     if not headers: 
      headers = [] 
      for i, col in enumerate(row): 
       if col in a: 
        # Store the index of the cols of interest 
        headers.append(i) 
      print headers  
     else: 
      results.append(list([row[i] for i in headers])) 
    return results 

Приведенный выше код, чтобы прочитать определенные столбцы в списке из FILE.CSV поэтому результат будет доступен в результатах, но код индексирования индексировать только следующие столбцы :как я могу прочитать столбец из CSV

** Fun 63 
** Food/Clothes 64 
** Politics 70 
** Business 73 
** end_with_al 75 
** end_with_ful 76 
** end_with_ible 77 
** end_with_ic 78 
** end_with_ive 79 
** end_with_less 80 
** end__with_ly 81 
** end_with_ous 82 
** sorry_word 83 
** Starting_with_Apolog 84 
** Gender 1487 

Код не индексирует списки внутри списка - как я могу заставить их искать их? Примечание: file.csv содержит некоторые данные с 1487 столбцами; a содержит несколько столбцов из файла file.csv.

+0

Вы уверены, что вы используете мелкий разделитель? – BenjaminB

+0

yes ... m sure ... – user104853

+1

Каково значение подписок в 'a'? – ForeverWintr

ответ

1

Почему бы не просто удалить список внутри списка?

Пример

'Starting_with_Apolog', ['NNP', 'MD', 'NN', 'NNP'] 

изменение:

'Starting_with_Apolog', 'NNP', 'MD', 'NN', 'NNP' 

Его простой хак, но это может быть самый простой способ это сделать.

EDIT

ИТАК, так как вы хотите, чтобы выйти из списка в структуре списка, я считаю, вы будете иметь, чтобы отказаться от некоторых характеристик. Следующий простой способ я могу думать, чтобы решить перечислен ниже:

a=['Business', 'Food/Clothes', 'Fun', 'Politics', 'Starting_with_Apolog', ['NNP', 'MD', 'NN', 'NNP'], ['NNP', 'NN', 'NNP'], ['PDT', 'MD', 'NN', 'NNP'], ['PRP$', 'MD', 'NN', 'NNP'], ['UH', 'MD', 'NN', 'NNP'], ['WP$', 'MD', 'NN', 'NNP'], 'end__with_ly', 'end_with_al', 'end_with_ful', 'end_with_ible', 'end_with_ic', 'end_with_ive', 'end_with_less', 'end_with_ous', 'sorry_word', 'Gender'] 
newa = []  
for element in a: 
    if isinstance(element, list): 
     for el in element: 
      newa.append(el) 
    else: 
     newa.append(element) 
a = newa 
# Now use "a" or "newa" in the rest of your code. 

В противном случае вашего if col in a: чека будет получить гораздо сложнее ...

Надеется, что это помогает!

0

Ваша проблема заключается в том, что in не проверяет автоматически включение в подсписках в a.

>>> 'Fun' in a 
    True 
>>> 'NNP' in a 
    False 

но

>>> 'NNP' in a[5] #a[5] is the list ['NNP', 'MD', 'NN', 'NNP'] 
    True 
+0

@Dylan я хочу в качестве списка – user104853

+0

Защиту try_literal_eval (пункт): попытки: возвращения ast.literal_eval (пункт) исключения (SyntaxError, ValueError): возвращенных деталь а = [try_literal_eval (пункт = ул (пункт). replace ("", "")) для элемента в class_label] print print a Фактически class_label содержит список ... так как я могу с помощью [i] – user104853

Смежные вопросы