[爆卦]python字串取代是什麼?優點缺點精華區懶人包

為什麼這篇python字串取代鄉民發文收入到精華區:因為在python字串取代這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者darkgerm (黑駿)看板Python標題Re: [問題] Python全文取代時間Sun ...


※ 引述《play9091 (長工)》之銘言:
: 小弟有個疑問,請教先進……
: Python有沒有辦法做文本內容的取代呢?
: 一般來說,有一個文本內容須要做一些取代的話會這麼做……
: for line in open("text.txt"):
: line.replace(replace('mubb',mubb)

str.replace 其實也可以做到啊~

s = open(filename).read().replace('aaa', 'bbb')
open(filename).write(s)

str.replace() 中的 str 也是可以有換行的

用 re.sub() 只是 pattern 可以用 regular expression 更強大而已

: 後來經過尋找方法後,知道 re.sub() 可以實現全文取代,如下
: newtext = re.sub(oldS,newS,open(filname,'r').read(),flags=re.I)
: open(filname,'w').write(newtext)
: 但在這邊我一個一疑問,上面用 re.sub() 的方法,只能取代一個字串,而且處理後還要把結果先存在一個 list 裡面,然後再寫到文本裡。
: 有沒有方法可以,取代多個字串呢?
: 像在 BASH 裡面的話,會有像下面這樣子例子,可以一次取代多個字串
: sed -e "s/$old_locationArea/$locationArea/g" -e "s/$old_atmport/$atmport/g"

最簡單的方法就是寫兩次 ex:

text = open(filename).read()
text = re.sub(old_locationArea, locationArea, text, flags=re.I)
text = re.sub(old_atmport, atmport, text, flags=re.I)
open(filename).write(text)

如果檔案太大在意效能的話,或許可以這樣做 (我沒實測效能...)

sub_dict = {
old_locationArea: locationArea,
old_atmport: atmport,
}

pattern = '|'.join(sub_dict.keys())

repl_func = lambda matchobj: sub_dict[matchobj.group(0)]

text = re.sub(pattern, repl_func, open(filename).read())
open(filename, 'w').write(text)

--
光明 的背後 是 黑暗
黑暗 的背後 還是 黑暗
由此可知 黑暗 > 光明 Q.E.D.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.235.135

你可能也想看看

搜尋相關網站