Jac*_*ack 13 python string case-insensitive
我最近开始学习Python,作为一种练习,我正在研究基于文本的冒险游戏.现在,代码实际上是无效的,因为它检查用户的响应,看它是否与同一个单词的几个变体相同.我如何更改它,以便在Python 3.2中字符串检查不区分大小写?
示例代码如下:
if str('power' and 'POWER' and 'Power') in str(choice):
print('That can certainly be found here.')
time.sleep(2)
print('If you know where to look... \n')
Run Code Online (Sandbox Code Playgroud)
Tim*_*ker 24
if 'power' in choice.lower():
Run Code Online (Sandbox Code Playgroud)
应该做(假设choice是一个字符串).如果choice 包含这个词,那将是真的power.如果要检查是否相等,请使用==而不是in.
另外,如果你想确保power只匹配整个单词(而不是作为horsepower或的一部分powerhouse),那么使用正则表达式:
import re
if re.search(r'\bpower\b', choice, re.I):
Run Code Online (Sandbox Code Playgroud)
如果您正在进行精确比较.
if choice.lower() == "power":
Run Code Online (Sandbox Code Playgroud)
或者,如果你正在进行子串比较.
if "power" in choice.lower():
Run Code Online (Sandbox Code Playgroud)
choice.lower().startswith( "power" )如果你感兴趣的话,你也有.
小智 5
str 类型/对象有一个专门用于无大小写比较的方法。
在 python3 提示符处:
>>> help(str)
...
| casefold(...)
| S.casefold() -> str
|
| Return a version of S suitable for caseless comparisons.
...
Run Code Online (Sandbox Code Playgroud)
因此,如果您将 .casefold() 添加到任何字符串的末尾,它会给您全部小写。
例子:
>>> "Spam".casefold()
'spam'
>>> s = "EggS"
>>> s.casefold()
'eggs'
>>> s == "eggs"
False
>>> s.casefold() == "eggs"
True
Run Code Online (Sandbox Code Playgroud)