簡體   English   中英

如何修復 IndexError:字符串索引超出范圍 - Python

[英]How to fix IndexError: String index out of range - Python

我正在嘗試為我的文本冒險制作一個解析器。 我使用了一個名為test.txt的文本文件。 我不斷收到IndexError: string index out of range 我怎樣才能解決這個問題?

解析器.py

def parse(file):
  data = {}
  
  with open(file, "r") as f:
    lines = f.readlines()
    f.close()

  for line in lines:
    line = line.strip()
    
    if line[0] == "@":
      name = line[1:]
      name = name.replace("\n", "")

      data[name] = {}

    if line[0] == "-":
      prop = line.split(":")
      prop_name = prop[0].replace("-", "")
      prop_name = prop_name.replace("\n", "")
      
      prop_desc = prop[1][1:]
      prop_desc = prop_desc.replace("\n", "")

      data[name][prop_name] = prop_desc

    

  return data
      
    
print(parse("test.txt"))

測試.txt

@hello

  -desc: Hello World! Lorem ipsum
  -north: world

@world

  -desc: World Hello! blah
  -south: hello
  

您正在剝離換行符( line = line.strip() ),因此如果一行為空,則只有一個空字符串並且line[0]超出范圍。

您應該測試該行是否真實:

if line and line[0] == "-":

或者,更好的是,在循環的開頭,跳過空行:

for line in lines:
    if line == '\n':
        continue
    # rest of code

由於您的文本中有許多“\n”,因此您應該在文件讀取時忽略它們。 嘗試這個:

  with open(file, "r") as f:
    lines = f.readline().splitlines()
    f.close()

暫無
暫無

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

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