gpt4 book ai didi

python - 文件操作: How to take out Punctuation and Capital letters?

转载 作者:行者123 更新时间:2023-12-01 05:45:45 26 4
gpt4 key购买 nike

我试图弄清楚如何打开一个文件,将文件中的所有字母变成小写,然后取出所有标点符号。我尝试了一些在网上和书中看到的东西,但我似乎无法弄清楚。

import string

def ReadFile(Filename):
try:
F = open(Filename)
F2=F.read()
except IOError:
print("Can't open file:",Filename)
return []
F3=[]
for word in F2:
F3=F2.lower()
exclude = set(string.punctuation)
F3= ''.join(ch for ch in F3 if ch not in exclude)
return F3







Name = input ('Name of file? ')
Words = ReadFile(Name)
print (F3)

给定一个句子,例如,

Then he said, "I'm so confused!".

成为

then he said im so confused

最佳答案

您的代码的问题在于最后一行:

print (F3)

F3 是函数内局部变量的名称。您无法从这里访问它。

但是您可以访问该变量中的相同,因为函数返回了该值,并且您将其存储在Words中。

所以,只需这样做:

print(Words)

现在,您的代码可以运行了。

<小时/>

话虽如此,它还可以改进。

最重要的是,看看这部分:

F3=[]
for word in F2:
F3=F2.lower()

for word in F2: 实际上循环遍历 F2 中的每个字符,因为这就是字符串的工作方式。如果你想逐字查看,则需要执行类似 for word in F2.split() 的操作:

同时,在循环内部,您每次通过循环都会重新分配F3,并且永远不会对先前的值执行任何操作,因此整个事情最终会成为一种非常奇特(且缓慢)的方式只做最后一个作业。

幸运的是,最后一个赋值 F3=F2.lower() 将整个字符串 F2 小写,这正是您想要做的,所以无论如何它都能解决。这意味着您可以将所有三行替换为:

F3=F2.lower()
<小时/>

您还应该始终关闭打开的文件。由于这可能很棘手(例如,在您的函数中,您必须记住在成功和错误情况下关闭它),因此最好的方法是自动使用 with 子句。替换这两行:

F = open(Filename)
F2=F.read()

与:

with open(Filename) as F:
F2=F.read()
<小时/>

之后,除了使用非 PEP-8 样式以及如果文件很大时会出现性能问题之外,您的代码实际上没有任何问题。

关于python - 文件操作: How to take out Punctuation and Capital letters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16199924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com