用_(下划线)替换.txt文件\ n(换行)的函数?

时间:2019-05-28 05:38:52

标签: python

我正在尝试编写一个函数,该函数以文件名作为参数并返回一个字符串,该字符串的所有\n字符均被_字符替换。

这就是我所做的:

def replace_space(filename):
    wordfile = open(filename)
    text_str = wordfile.read()
    wordfile.close()
    text_str.replace("\n", "_")

replace_space("words.txt")

我还尝试使用“”代替“ \ n”:

    text_str.replace(" ", "_")

3 个答案:

答案 0 :(得分:7)

与Haskell和Scala之类的语言不同,Python如果在没有显式return语句的情况下到达函数体的末尾,将返回None。因此,您需要这样做:

def replace_space(filename):
    with open(filename) as wordfile:
        text_str = wordfile.read()

    return text_str.replace("\n", "_")

还请注意使用with代替openclose;即使您在途中遇到异常,也可以确保关闭文件。

答案 1 :(得分:4)

一些关于您代码的建议

  • 您可以使用with上下文管理器打开文件,这将为您关闭文件
  • 您需要返回更新后的字符串。
def replace_space(filename):
    text_str = ''
    #Open the file and read the contents
    with open(filename) as wordfile:
        text_str = wordfile.read()

    #Replace and return the updated string
    return text_str.replace("\n", "_")

replace_space("file.txt")

如果您不想使用上下文管理器,则需要像以前一样显式打开和关闭文件

def replace_space(filename):
    text_str = ''

    #Open the file
    wordfile = open(filename)
    #Do the read and replace
    text_str = wordfile.read().replace("\n", "_")

    #Close file and return updated string
    wordfile.close()
    return text_str

replace_space("file.txt")

答案 2 :(得分:0)

def replace(filename):
    with open(filename, 'r') as file:
        text = file.read()
    text = text.replace('\n', '_')
    return text