-1

我有一个文本文件,我想删除标点符号并将其另存为新文件,但它没有删除任何内容,为什么?

代码:

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)

删除任何标点符号为什么?

4

2 回答 2

2
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) 里面有l什么punctuation(l)
2)您正在调用punctuation()- 它工作正常 - 但不要使用它的返回值
3)因为它当前没有返回值,只是打印它;-)

请注意,我只进行了最小的更改以使其正常工作。您可能希望将其发布到我们的代码审查网站,以了解如何改进它。

另外,我建议您获得一个好的IDE。在我看来,你无法击败PyCharm社区版。了解如何使用调试器;它是你最好的朋友。设置断点,运行代码;它会在遇到断点时停止;然后,您可以检查变量的值。

于 2020-01-29T06:49:29.607 回答
0

取出文件读/写,你可以从这样的字符串中删除标点符号:

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.maketransand str.translate

请注意,python 字符串是不可变的。无法更改给定的字符串;您对字符串执行的每个操作都将返回一个新实例。

于 2020-01-29T06:59:16.747 回答