- 您不能將變量「狀態」直接放入替換字符串中。你應該使用python字符串格式來引用變量。
- 保持regex簡單,假設數據很簡單。如果ZIP總是出現在字符串的末尾,那麼只需從最後匹配,使用$。
讓我試試:
instr = "123 street st, anytown 12345"
# Always strip the trailing spaces to avoid surprises
instr = instr.rstrip()
state = 'CA'
# Assume The ZIP has no trailing space and in last position.
search_pattern = r"(\d{5})$"
#
# Format the replacement, since I search from the end, so group 1 should be fined
replace_str = r"{mystate} \g<1>'.format(mystate = state)
outstr = re.sub(search_pattern, replace_str, instr)
@Forge例子是清晰而乾淨。但是,在使用str.rsplit()時,需要注意數據質量。例如
# If town and zip code stick together
instr = "123 street st, anytown12345"
# or trailing spaces
instr = "123 street st, anytown 12345 "
通用修復程序是使用我的代碼中顯示的strip和regex。總是要考慮輸入數據質量,經過單元測試後有些代碼會失敗。
這就是爲什麼我愛Python。我不得不添加更多的字符串處理,但它很好。謝謝! – pekasus
我將添加另一個str.rstrip()以刪除尾隨空格,以防萬一數據包含尾隨空格,例如「123 street st,anytown 12345」,上面的代碼將失敗。 – mootmoot