使用一些读取csv文件并获取用户查找的searchWord计数的代码。该函数不应区分大小写,因此如果用户想要查找单词: trampoline,它将捕获Trampoline、Trampoline等。
我想知道是否可以在同一个参数中添加.isupper()和.islower()来简化代码?我感觉我还做错了什么;只是找不到那是什么。
例如。从.csv文件
I have 12 trampolines. The TRAMPOLINES are round and have netting
surrounding them.
Trampolines are my favorite activity.我尝试在单独的代码行中添加这两个方法,但遇到了意外的输出。
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
发布于 2019-05-10 00:26:16
将文件中的目标单词和文本行都转换为小写:
for separateLines in contents.split():
if word.lower() in separateLines.lower():
counter += 1发布于 2019-05-10 00:30:46
也许这有点过分了,但是你可以使用正则表达式。为什么?它可能比拆分和循环快一点(并不是说它不是在幕后发生的)。享受吧--我在下面写了一小段!
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'))发布于 2019-05-14 12:12:20
islower和isupper只返回一个关于字符串是否为小写的布尔值。你想要一个函数,它可以将字符串转换成大写。也就是说,一个具有写入/功能的函数,而不仅仅是读取。使用str.lower()和str.upper()
https://stackoverflow.com/questions/56063750
复制相似问题