【问题标题】:string index out of range when reading a file读取文件时字符串索引超出范围
【发布时间】:2019-08-04 01:09:38
【问题描述】:

我想读取以下格式的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=';') 

我知道不支持拆分..

感谢您的宝贵时间

【问题讨论】:

    标签: python python-3.x csv web-scraping


    【解决方案1】:

    使用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
    

    【讨论】:

      【解决方案2】:

      只是一个解释。

      问题与csv 或其他无关。主要原因:

      字符串比索引值短。换句话说:字符串中没有按索引(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 解决方案更好。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        我认为你应该使用 csv 模块,这里有几个examples

        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()
        

        【讨论】:

          猜你喜欢
          • 2017-01-06
          • 1970-01-01
          • 2015-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多