2014-09-24 42 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)