簡體   English   中英

類型錯誤:列表索引必須是整數,而不是str。 向CSV添加strs時

[英]Type Error: List Indices must be integers, not str. While adding strs to CSV

不知道這是怎么回事。 嘗試導入以字符串形式連接的線,然后將其放入CSV ... Hmm ....

import csv
import io
import os
import sys

def putInCSV():
    if os.stat("test_attacking_ips_spreadsheet.csv").st_size == 0:
        temp = open("test_attacking_ips_spreadsheet.csv", 'wb')
        tempwrite = csv.writer(temp)
        tempwrite.writerow(["IP Address"]['Hostname']['AS Number']['AS Name']['Net Range']['CC']['Type']['Targets']['Last Seen']['Notes']['FW Block']['Signatures'])
        #["IP Address"]['Hostname']['AS Number']['AS Name']['Net Range']['CC']['Type']['Targets']['Last Seen']['Notes']['FW Block']['Signatures']#
        temp.close()
    Read = open("test_attacking_ips_spreadsheet.csv", 'rb')
    Append = open("test_attacking_ips_spreadsheet.csv", 'ab')
    reader = csv.reader(Read)
    writer = csv.writer(Append)
    sweetness = len(list(reader))
    fileName = ''.join(sys.argv[1:2])
    if fileName == '':
        fileName = raw_input('Input the file with extension\n>')
    with open(fileName) as f:
        for line in f:
            line = ''.join(line)
            if "|" in line:
                findStop = line.index("|")
                ASNum = line[:findStop]
                if "-" not in ASNum:
                    ASLine = "AS" + ASNum
                else:
                    ASLine = ''
                remainder = line[findStop:]
                findStop = remainder.index("|")
                ipAdd = remainder[:findStop]
                HSTNm = ''
                remainder = line[findStop:]
                findStop = remainder.index("|")
                ASName = remainder[:findStop]

                writer.writerow([ipAdd][HSTNm][ASLine][ASName])

putInCSV()

有人看到我的錯嗎? 我找不到一個簡明的原因,因為大多數人都鏈接了api信息,但是,我找不到可以幫助支持我的研究的信息。

Traceback (most recent call last):
  File "C:\Users\user\Documents\bulk_whois\PutInCSV.py", line 46, in <module>

    putInCSV()
  File "C:\Users\user\Documents\bulk_whois\PutInCSV.py", line 44, in putInCSV

    writer.writerow([ipAdd][HSTNm][ASLine][ASName])
TypeError: list indices must be integers, not str

這些行是完全錯誤的:

tempwrite.writerow(["IP Address"]['Hostname']['AS Number']['AS Name']['Net Range']['CC']['Type']['Targets']['Last Seen']['Notes']['FW Block']['Signatures'])
...
writer.writerow([ipAdd][HSTNm][ASLine][ASName])

定義列表的語法為l = ["a", "b", "c"]

["IP Address"]['Hostname']試圖從列表["IP Address"]提取索引'Hostname'的元素,並導致您的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM