关于replace()函数的问题

时间:2014-09-24 06:23:44

标签: python

我试图替换一些文字休息。 我的代码是:

str = "2014년 8월 19일 오후 11:08, 회원님 : 안녕"
def convert(a):
    str.replace("년 ", a)
    str.replace("월 ", a)
    str.replace("일 ", a)

b = convert(",")
print(b)

和这样的错误:(pycharm IDE)

C:\Python34\python.exe C:/Users/minseok/PycharmProjects/untitled1/test.py
None

Process finished with exit code 0

我无法识别我的问题。 我该怎么办这个错误? 感谢。

3 个答案:

答案 0 :(得分:3)

两个问题:第一,你的替换没有生效,第二,你没有返回任何东西。你需要这样做:

def convert(a):
    myStr = "2014년 8월 19일 오후 11:08, 회원님 : 안녕"
    myStr = myStr.replace("년 ", a)
    myStr = myStr.replace("월 ", a)
    myStr = myStr.replace("일 ", a)
    return myStr

b = convert(",")
print(b)

replace不修改字符串,它返回一个新字符串,因此如果要保存结果,则需要将其分配给变量。此外,您的函数将返回None,除非您告诉它返回其他内容,这就是您看到无的原因。

另外,我在函数中移动了你的字符串。如果要在外部定义它,则需要将其作为参数传递,或使用global myStr使其成为全局变量(但第一个选项更好)。

我还将变量名称从str更改为myStrstr是Python中内置类型的名称,因此最好不要将该名称用于自己的变量。

答案 1 :(得分:1)

replace会返回一个新字符串,因此当您更换字符时,会错过结果。您应该捕获树结果,然后将其返回

>>> str = u"2014년 8월 19일 오후 11:08, 회원님 : 안녕"
>>> def convert(a):
...     return  str.replace(u"년 ", a).replace(u"월 ", a).replace(u"일 ", a)
...     
... 
>>> b = convert(", ")
>>> print(b)    
2014, 8, 19, 오후 11:08, 회원님 : 안녕

答案 2 :(得分:0)

你犯了两个错误。首先,您正在隐藏内置名称str,其次,您没有从convert(a)返回任何内容,这就是为什么在字符串上打印None的原因。

请查看以下代码段以获取帮助,

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

sample_string = "2014년 8월 19일 오후 11:08, 회원님 : 안녕"


def convert(a):
    string_to_return = ''

    string_to_return = sample_string.replace("년 ", a)
    string_to_return = string_to_return.replace("월 ", a)
    string_to_return = string_to_return.replace("일 ", a)

    return string_to_return

if __name__ == '__main__':

    b = convert(",")
    print(b)