Ошибка, связанная с данными Python: индексы списков должны быть целыми или кусочками, а не str - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь автоматизировать процесс для моей работы. Я продолжаю получать:

Traceback (most recent call last):
Number of UPN's: 
  File "C:/Users/Ultrarev/Desktop/Emeran-Parser/Eme_Parser.py", line 63, in <module>
74
    if rowExcel[0] == kPN[i]:
TypeError: list indices must be integers or slices, not str.

Как ошибка, и хотя я новичок в Python, я не знаю, как подойти к этому, не глядя на экран. Я хочу составить словарь номеров изделий для автомобилей, представляющих интерес (то есть для автомобилей, в которые могут вписываться детали). Этот объект в свою очередь будет генерировать соответствующие автомобили, которые могут соответствовать этой конкретной части.

import csv
import collections
import sys

from Car_of_Interest import Car_of_Interest


def main ():

    data = csv.open(r"C:\Users\Ultrarev\Desktop\Duplicator-fier\Book1.csv")
    data = csv.reader(data)

    print("Data: (testing)")

def f7(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]

with open(r'C:\Users\Ultrarev\Desktop\Duplicator-fier\Book1.csv', newline = '') as csvfile:
    data = csv.reader(csvfile)
    rowExcel = []
    kPN = []
    car_info = []
    UPN = ()
    cUPN = []
    CARS = {}
    #UPN_len = len(UPN)
    for row in data:
        open(r'C:\Users\Ultrarev\Desktop\Duplicator-fier\Book1.csv')
        rowExcel.append(row)

        car_info.append(row[2])
        car_info.append(row[3])
        car_info.append(row[4])

        #print('-> '.join(row))
    for row in rowExcel:
        kPN.append(row[0])

# Convert to string.
list1 = kPN
str1 = ' '.join(str(e) for e in list1)

#Remove Duplicates in kPN.
UPN = f7(kPN)


l = UPN.__sizeof__()

print("kPN: ")
print(kPN)
print("Data: ")
print(data)
print("UPN: ")
print(UPN)
print("Major Car Information of File to be Parsed into HTML: ")
print(rowExcel)
print("Number of UPN's: ")
print(len(UPN))

for i in kPN:
    for x in rowExcel:
        if rowExcel[0] == kPN[i]:
           #Create Dictionary - UPN:[car...n]
           #Make car objects.
           Car_of_Interest(rowExcel[2], rowExcel[3], rowExcel[4])

#    cars_I
#     ^   
#     |
#UPN:[Car_of_Interest...n]

ошибка

Ответы [ 2 ]

0 голосов
/ 21 января 2019

кПН является вектором, если вы используете for i in kPN, каждый i является элементом кПН

Попробуйте:

for i in kPN:
    for x in rowExcel:
        if rowExcel[0] == i:

или

for i in range(len(kPN)):
    for x in rowExcel:
        if rowExcel[0] == kPN[i]:
           ...
0 голосов
/ 21 января 2019
for i in kPN:
    for x in rowExcel:
        if rowExcel[0] == kPN[i]:

Я предполагаю, что в приведенном выше примере вы хотите i не kPN[i]

, вы уже получаете значение из kPN с помощью цикла for i in kPN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...