2014-09-24 41 views
-2

我正在尝试替换一些文本来休息。 这里我的代码是:关于replace()函数的问题

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 

我认不出我的问题。 我该怎么办这个错误? 谢谢。

+1

你应该retrun价值形态的转换功能,否则它返回的[为什么不叫Python的字符串方法NOnetype – 2014-09-24 06:27:49

+0

部分重复做任何事情,除非你分配它的输出?](http://stackoverflow.com/questions/9189172/why-doesnt-calling-a-python-string-method-do-anything-unless-you-assign-its-out) – smci 2015-03-02 10:01:01

回答

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, 회원님 : 안녕 
+0

真的非常感谢你的帮助!! – 2014-09-24 06:43:08

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中内置类型的名称,因此最好不要将该名称用于自己的变量。

+0

这给出了一个错误:'UnboundLocalError:在赋值之前引用的局部变量'myStr'。你需要为函数内部的字符串使用不同的名称,你需要将字符串作为参数传递(所以第一个'replace'不会在全局上被调用)。 – Blckknght 2014-09-24 06:29:49

+0

@Blckknght:你说得对,我编辑了我的答案以解决这个问题。 – BrenBarn 2014-09-24 06:32:09

+0

对不起。但此代码无法正常工作。 它正在打印原始值。 – 2014-09-24 06:39:53

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)