python - 空白被忽略
问题描述
我做了一个有趣的程序,在一个句子中找到“爱”这个词,并列出有多少个“爱”。如您所见,有几个要求,“爱”必须是一个词。这意味着它必须用空格分隔或以标点符号结尾。我还解释了从句子开头开始的“爱”。
num_loves = 0
inpt = input('type ')
for star in range(len(inpt) - 3):
if inpt[star] == 'l' or 'L' and inpt[star+1] == 'o' and inpt[star+2] == 'v' and inpt[star+3] == 'e':
if inpt == 'love' or 'Love':
num_loves = num_loves + 1
elif star == 0 and inpt[star+4] == ' ' or '.' or ',' or '!' or '?':
num_loves = num_loves + 1
elif star != 0:
if inpt[star-1] == ' ' and inpt[star+4] == ' ' or '.' or ',' or '!' or'?':
num_loves = num_loves + 1
if num_loves != 0:
print(num_loves)
print('true')
if num_loves == 0:
print('false')
虽然它很擅长发现“爱”,但它太棒了。当我输入“Iloveyou”时,它仍然找到了爱这个词,即使我不想要它。这正是我输入代码“inpt[star-1] == ' '”的原因。似乎python忽略了这部分。请帮忙。我正在使用python 3。
解决方案
你把事情复杂化了,错过了一些带有标点符号之类的极端案例。有更简单的解决方案:
from collections import Counter
inpt = input('type ') # "Love Love lovelovelove Love love lovelove Love love love love"
no_punct = ''.join( [i.upper() if i.isalpha() else ' ' for i in inpt] )
print Counter(no_punct.split())['LOVE']
输出:
8
推荐阅读
- android - 单击 RecyclerView 后更新主要活动中的 TextView
- bash - bash中opts=${1:+--host $1}是什么意思?
- php - Zend Framework - 如何告诉漂亮的 url 去静态 url?
- ios - 如何减少 base64 字符串长度
- graalvm - 是否可以在 Java“GraalVM”程序中运行 Python 程序?
- ios - draw(_ rect: CGRect) 不绘制超过一定尺寸
- python - 在 python 代码中使用环境变量(从 shell/终端传递)的正确方法
- r - keras 中的输入形状(此损失期望目标具有与输出相同的形状)
- python-3.x - 检查熊猫中的日期列
- c++ - 如何在 c++ builder 6 中从应用程序源创建 dll?