簡體   English   中英

讀取文件時字符串索引超出范圍

[英]string index out of range when reading a file

我想閱讀以下格式的csv

BX80684I58400;https://www.websupplies.gr/epeksergastis-intel-core-i5-8400-9mb-2-80ghz-bx80684i58400
bx80677g3930;https://www.websupplies.gr/epeksergastis-intel-celeron-g3930-2mb-2-90ghz-bx80677g3930

我使用以下內容

contents = []
with open('websupplies2.csv','r') as csvf: # Open file in read mode
urls = csvf.read()
split_urls=urls.split('\n')

for split_url in split_urls:

    contents.append(split_url[1])

但我明白了

字符串索引超出范圍

我注意到我無法通過delimiter =';' 在csvf.read()里面。 如果我改成它

csv.reader(csvf, delimiter=';') 

我不支持拆分..

感謝您的時間

使用csv模塊。

例如:

import csv

with open(filename) as infile:
    reader = csv.reader(infile, delimiter=";")
    for row in reader:
        print(row[1])

輸出:

https://www.websupplies.gr/epeksergastis-intel-core-i5-8400-9mb-2-80ghz-bx80684i58400
https://www.websupplies.gr/epeksergastis-intel-celeron-g3930-2mb-2-90ghz-bx80677g3930

只是一個解釋。

問題與csv或其他問題無關。 主要原因:

string比索引值短。 換句話說:string中沒有索引元素( split_url[1]

我試着用一個變量來解釋:

your_string = 'abc'
print(your_string[0]) # a
print(your_string[1]) # b
print(your_string[2]) # c
# len(your_string) is 3, but you trying to get next item
print(your_string[3]) # IndexError: string index out of range

您可以使用條件修復它( if len(split_url)... )但我認為@Rakesh解決方案更好。

希望這可以幫助。

我認為你應該使用csv模塊,這里有幾個例子

import csv

csv.register_dialect('myDialect',
delimiter = ';',
skipinitialspace=True)

with open('websupplies2.csv', 'r') as csvFile:
    reader = csv.reader(csvFile, dialect='myDialect')
    for row in reader:
        print(row)

csvFile.close()

暫無
暫無

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

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