首页 > 解决方案 > 如何在不使用 split 方法的情况下从字符串中挑选一个单词?

问题描述

我有一个看起来像“ABC DEF GHI”的字符串,我希望能够创建一个只有“ABC”或“DEF”或“GHI”的新字符串。我正在尝试使用 .isalpha 方法来确定字符串何时从字母变为空格。这就是我的代码的样子:

def get_word(chars: str, width: int) -> str:    
    word = ""
    for i in range(len(chars)):
        if chars[i].isaplpha():
            word += chars[i]
            if chars[i].isspace():
                break
    return word

但是,我得到一个未解决的属性引用错误,因为我的输入需要是一个字符串。这是什么意思?它不允许我使用 .isalpha。但是如果 i = 1 那么 chars[i] = "B" 这是字母所以我很困惑。

我不允许使用拆分方法...请帮助!

标签: python

解决方案


如果您正在寻找此问题的通用解决方案,您可以使用正则表达式:

import re

a = "ABC DEF GHI"

output = re.findall('[A-Z]{3}', a)

print(f"""
        First item: {output[0]}
        Second item: {output[1]}
        Third item: {output[2]}
       """)

这将检索 3 个连续大写字母字符(A 到 Z)的所有实例。

如果输入字符串还可以包含数字,例如“AB3 DEF 2HI”,那么您也可以使用output = re.findall('\w{3}', a).

如果输入字符串具有不同长度的“单词”,您可以使用output = re.findall('\w+', a)它将匹配任意数量的连续字符。

要了解有关正则表达式的更多信息并自己动手玩,您可以使用regexr.com


推荐阅读