python 不删除标点符号
python not removing punctuation
我有一个文本文件,我想删除标点符号并将其另存为新文件,但它没有删除任何内容,不知道为什么?
代码:
def punctuation(string):
punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
for x in string.lower():
if x in punctuations:
string = string.replace(x, "")
# Print string without punctuation
print(string)
file = open('ir500.txt', 'r+')
file_no_punc = (file.read())
punctuation(l)
with open('ir500_no_punc.txt', 'w') as file:
file.write(file_no_punc)
为什么要删除标点符号?
def punctuation(string):
punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
for x in string.lower():
if x in punctuations:
string = string.replace(x, "")
# return string without punctuation
return string
file = open('ir500.txt', 'r+')
file_no_punc = (file.read())
file_no_punc = punctuation(file_no_punc)
with open('ir500_no_punc.txt', 'w') as file:
file.write(file_no_punc)
解释:
我只将 punctuation(l)
更改为 file_no_punc = punctuation(file_no_punc)
,将 print(string)
更改为 return string
1) punctuation(l)
中的 l
是什么?
2) 您正在调用 punctuation()
- 它工作正常 - 但不要使用它的 return 值
3) 因为它当前没有 return 一个值,只是打印它 ;-)
请注意,我只做了很小的改动就可以让它正常工作。您可能想 post 到我们的 code review 网站,看看如何改进它。
此外,我建议您获得一个好的 IDE。在我看来,您无法击败 PyCharm 社区版。了解如何使用调试器;它是你最好的朋友。设置断点,运行代码;它会在遇到断点时停止;然后您可以检查变量的值。
取出文件 reading/writing,您可以像这样从字符串中删除标点符号:
table = str.maketrans("", "", r"!()-[]{};:'\"\,<>./?@#$%^&*_~")
# # or maybe even better
# import string
# table = str.maketrans("", "", string.punctuation)
file_with_punc = r"abc!()-[]{};:'\"\,<>./?@#$%^&*_~def"
file_no_punc = file_with_punc.lower().translate(table)
# abcdef
我在哪里使用 str.maketrans
and str.translate
.
请注意 python 字符串是不可变的。无法更改给定的字符串;您对字符串执行的每个操作都将 return 一个新实例。
我有一个文本文件,我想删除标点符号并将其另存为新文件,但它没有删除任何内容,不知道为什么?
代码:
def punctuation(string):
punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
for x in string.lower():
if x in punctuations:
string = string.replace(x, "")
# Print string without punctuation
print(string)
file = open('ir500.txt', 'r+')
file_no_punc = (file.read())
punctuation(l)
with open('ir500_no_punc.txt', 'w') as file:
file.write(file_no_punc)
为什么要删除标点符号?
def punctuation(string):
punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
for x in string.lower():
if x in punctuations:
string = string.replace(x, "")
# return string without punctuation
return string
file = open('ir500.txt', 'r+')
file_no_punc = (file.read())
file_no_punc = punctuation(file_no_punc)
with open('ir500_no_punc.txt', 'w') as file:
file.write(file_no_punc)
解释:
我只将 punctuation(l)
更改为 file_no_punc = punctuation(file_no_punc)
,将 print(string)
更改为 return string
1) punctuation(l)
中的 l
是什么?
2) 您正在调用 punctuation()
- 它工作正常 - 但不要使用它的 return 值
3) 因为它当前没有 return 一个值,只是打印它 ;-)
请注意,我只做了很小的改动就可以让它正常工作。您可能想 post 到我们的 code review 网站,看看如何改进它。
此外,我建议您获得一个好的 IDE。在我看来,您无法击败 PyCharm 社区版。了解如何使用调试器;它是你最好的朋友。设置断点,运行代码;它会在遇到断点时停止;然后您可以检查变量的值。
取出文件 reading/writing,您可以像这样从字符串中删除标点符号:
table = str.maketrans("", "", r"!()-[]{};:'\"\,<>./?@#$%^&*_~")
# # or maybe even better
# import string
# table = str.maketrans("", "", string.punctuation)
file_with_punc = r"abc!()-[]{};:'\"\,<>./?@#$%^&*_~def"
file_no_punc = file_with_punc.lower().translate(table)
# abcdef
我在哪里使用 str.maketrans
and str.translate
.
请注意 python 字符串是不可变的。无法更改给定的字符串;您对字符串执行的每个操作都将 return 一个新实例。