python - 在 python 中,测试字符串的 1 或 3 个连续实例,但不是 2 个(没有正则表达式)

标签 python logic control-flow

我正在处理的数据...

* 标记属性 A
** 标记属性 B
*** 标记属性 A 和 B

text1 = "spam*eggs"   # A
text2 = "eggs**spam"  # B
text3 = "spam***spam" # A & B

测试属性 B 很容易,

"**" in <string>

但是使用相同的策略测试属性 A 会给出 text2 的误报。

>>> "*" in text2
True

我想测试属性 A。是否有一种 Pythonic 方法可以在不使用正则表达式的情况下执行此操作?我不想使用正则表达式,因为我与不熟悉正则表达式的初学者共享代码。

最佳答案

试试这个:

idx = txt.index('*')
if txt[idx+1] != '*':
    print 'A'
elif txt[idx+2] != '*':
    print 'B'
else:
    print 'A & B'

上述内容将引发极端情况的异常 - 例如,如果字符串不存在,或者字符串是最后一个字符。此解决方案的另一个好处是执行一次文本遍历(调用 index())。

关于python - 在 python 中,测试字符串的 1 或 3 个连续实例,但不是 2 个(没有正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19498771/

相关文章:

c - 作业: Trying to sort out what operation I am attempting to compute C

Python 2.7 警告 : __init__ not compatible to __new__

Python 列表超出范围

logic - 可以在不使用先前证明的引理的情况下证明 coq (或一般)中的定理吗?

c# - 月底计算

control-flow - 使用 "if/elseif/else"与 "if/else{if/else}"

swift - `switch` 类似模式匹配的控制流语句匹配任何和所有真实情况?

python - “不理解的数据类型”定义列名列表时出错

python - 异步任务的开销是多少?

python - 如何在输出窗口中并排打印单独的多行 ascii 符号