(python)我一直得到一个IndexError:字符串索引超出范围



我正在努力解决问题

实施​映射器​, ​映射文件到计数​,它获取一个字符串(文件中的文本(并返回该字符串中大写单词的数量。一个单词被定义为一个系列由空格或换行符将字符与其他单词分隔开。如果一个单词的第一个字母是大写的(A对A(,那么它就是大写的。

我的python代码当前读取

def mapFileToCount(s):
lines = (str(s)).splitlines()
words = (str(lines)).split(" ")
up = 0
for word in words:
if word[0].isupper() == True:
up = up + 1
return up

然而,我不断得到错误IndexError:字符串索引超出范围

请帮助

目前

  • 给定Hi huy n hi you there
  • lines将为['Hi huy ', ' hi you there']
  • 当您使用str(lines)进行拆分时,words将为["['Hi", 'huy', "',", "'", 'hi', 'you', "there']"]

我建议您使用words = re.split("s+", s)同时拆分任何空白。


那么IndexError的问题出现在像Hi where are you__(_是空格(这样的情况下,当你拆分时,末尾会有一个空字符串,并且你不能访问它的第一个字符,所以只需在if 中添加一个条件

  • if word,因为0大小的字是False,而其他是True

  • if word[0].isupper()为您测试

import re
def mapFileToCount(s):
words = re.split("s+", s)
up = 0
for word in words:
if word and word[0].isupper():
up = up + 1
return up

字符串索引超出范围意味着您试图访问的索引不存在于字符串中。这意味着你试图在给定的点从字符串中获取一个字符。如果该给定点不存在,那么您将尝试获取不在字符串中的字符。

在你的代码中是word[0]

最新更新