python - 如何在不使用 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" 这是字母所以我很困惑。
我不允许使用拆分方法...请帮助!
解决方案
如果您正在寻找此问题的通用解决方案,您可以使用正则表达式:
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
推荐阅读
- redhat - Yum 错误:软件包需要 libhogweed.so,正在删除 nettle-2.7.1
- python - python beautifulsoup if-in-statement 不能正常工作
- python - 如何正确地将 datetime 模块导入 jupyter notebook?
- clojure - Clojure,重新绘制成功从graphql获取数据,但回调没有激活
- spring - Spring MockMVC 测试奇怪的行为。单一与“全部”执行
- javascript - 为什么脚本编译需要这么长时间?
- node.js - Node 如何同时处理两个以上的用户?
- c# - 如何使用 AWS CLI 为 dotnet 5 项目执行 lambda 无服务器部署
- opengl - 模板的OpenGL修剪/内联轮廓
- javascript - 将 onclick 事件添加到主题小部件按钮时出现问题