条件 - 程序必须在字符串中找到并打印第一个找到的单词。字符串可以以空格、逗号或句点开头(单词可以以相同的字符结尾),因此程序必须找到单词的第一个字母开始和最后一个字母结束的位置。(例如,如果字符串是“.,Hello,.world”,则输出“Hello”)
我决定通过迭代 while 循环来实现这一点。第一个 while in order 工作正常并找到单词的开头,第二个由于某种原因给出了错误,尽管我写了一个看似相似的表达式。
错误:
while (text[i]!=' ' or text[i]!="," or text[i]!="."): IndexError:string index out of range
如何修复此错误或如何实现此程序。
def first_word(text: str) -> str:
"""
returns the first word in a given text.
"""
# your code here
i=0
while (text[i]==' 'or text[i]=="," or text[i]=="."):
i += 1
else:
wordstart = i
print(wordstart)
while (text[i]!=' ' or text[i]!="," or text[i]!="."):
i += 1
else:
wordfinish = i
print(wordfinish)
print(text[wordstart:wordfinish])
first_word(" . Hello,, world")
是的,只是你的逻辑被打破了,我们在单词中添加了符号,但
不是
,
,不是,不是
.
要使用指定的分隔符将文本拆分为单词,可以使用正则表达式:
获取第一个非空词:
作为一个函数:
您还可以从从问题字符串中获取第一个单词中调整解决方案。
re.find*()
使用或使用带有修改条件的显式循环来反转正则表达式:撇号只有一个问题,我喜欢xs“我是”是两个词或一个词,根据你的情况使用你需要的东西。