我正在尝试编写一个函数,该函数以文件名作为参数并返回一个字符串,该字符串的所有\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(" ", "_")
答案 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
代替open
和close
;即使您在途中遇到异常,也可以确保关闭文件。
答案 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