首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一行代码中包含.isupper()和.islower()方法?

如何在一行代码中包含.isupper()和.islower()方法?
EN

Stack Overflow用户
提问于 2019-05-10 00:21:57
回答 3查看 124关注 0票数 0

使用一些读取csv文件并获取用户查找的searchWord计数的代码。该函数不应区分大小写,因此如果用户想要查找单词: trampoline,它将捕获Trampoline、Trampoline等。

我想知道是否可以在同一个参数中添加.isupper()和.islower()来简化代码?我感觉我还做错了什么;只是找不到那是什么。

例如。从.csv文件

代码语言:javascript
复制
I have 12 trampolines. The TRAMPOLINES are round and have netting 
surrounding them.

Trampolines are my favorite activity.

我尝试在单独的代码行中添加这两个方法,但遇到了意外的输出。

代码语言:javascript
复制
def countingWords(word):
openFile= open('file.csv', 'r')
contents = openFile.read()
openFile.close

counter = 0

for separateLines in contents.split():
   if str(word) in separateLines:
      counter += 1

   elif str(word).isupper():
      counter += 1
   elif str(word).islower():
      counter += 1

return count

目前,如果用户输入: countingWords('Trampoline'),则输出将仅为1,而实际上应该为3

EN

回答 3

Stack Overflow用户

发布于 2019-05-10 00:26:16

将文件中的目标单词和文本行都转换为小写:

代码语言:javascript
复制
for separateLines in contents.split():
    if word.lower() in separateLines.lower():
        counter += 1
票数 2
EN

Stack Overflow用户

发布于 2019-05-10 00:30:46

也许这有点过分了,但是你可以使用正则表达式。为什么?它可能比拆分和循环快一点(并不是说它不是在幕后发生的)。享受吧--我在下面写了一小段!

代码语言:javascript
复制
import re

data = """
I have 12 trampolines. The TRAMPOLINES are round and have netting 
surrounding them.

Trampolines are my favorite activity.
"""

def count_instances(data, word):
    res = re.findall('.?{}.?'.format(word.lower()), data, flags=re.IGNORECASE)
    print(res)
    return len(res)


print(count_instances(data, 'trampolines'))
票数 0
EN

Stack Overflow用户

发布于 2019-05-14 12:12:20

islowerisupper只返回一个关于字符串是否为小写的布尔值。你想要一个函数,它可以将字符串转换成大写。也就是说,一个具有写入/功能的函数,而不仅仅是读取。使用str.lower()str.upper()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56063750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档