python中字符串自動(dòng)拼接的示例代碼
python中的字符串自動(dòng)拼接發(fā)生在編譯成字節(jié)碼的時(shí)期,只會(huì)對(duì)字符串字面量進(jìn)行自動(dòng)拼接。
- 對(duì)于同一行:相鄰字符串字面量之間如果只包含空格,會(huì)自動(dòng)拼接為一個(gè)整體對(duì)待。
- 對(duì)于不同行:需要在外側(cè)用括號(hào)表明是一個(gè)整體,python才會(huì)自動(dòng)拼接。不帶括號(hào)時(shí)換行會(huì)當(dāng)作不同的字符串。
1.背景
在用下面正則判斷輸入地址是否屬于僅行政區(qū)劃地址時(shí):
import re
XZQH_PATTERN = r"^[^省市區(qū)縣村路街鄉(xiāng)0-9a-zA-Z]+省$|"
r"^(?!.*[一二三四五六七八九十]門市$)[^區(qū)縣村路街鄉(xiāng)]*[^超小魚0-9a-zA-Z]市$|"
r"^[^縣鎮(zhèn)區(qū)村路街鄉(xiāng)]*[^小景勝假務(wù)東西南北中社業(yè)發(fā)港住車游護(hù)園校舍活墅工0-9a-zA-Z一二三四五六七八九十]區(qū)$|"
r"縣$"
def process_one(address: str):
"""
判斷單條地址是否僅包含行政區(qū)劃
:param address:
:return: 是:True 否:False
"""
if re.search("自治區(qū)", address):
address = re.sub("自治區(qū)", "省", address)
return re.search(XZQH_PATTERN, address)
if __name__ == '__main__':
print(process_one("xx小區(qū)")) # <re.Match object; span=(0, 0), match=''>
正則中區(qū)前已經(jīng)排除不能為小,但是正則的匹配結(jié)果返回了空字符串,相當(dāng)于命中了上面的正則返回了True,不符合匹配預(yù)期。
排查發(fā)現(xiàn)原因在于python的字符串自動(dòng)拼接規(guī)則,因?yàn)樽址畵Q行且未用()包裹,所以上面的正則匹配串實(shí)際上只有 ^[^省市區(qū)縣村路街鄉(xiāng)0-9a-zA-Z]+省$|是有效的。
因?yàn)?code>|后面是空,測(cè)試case沒(méi)有匹配省結(jié)尾,但會(huì)匹配后面分支的空字符串,所以結(jié)果才會(huì)是 <re.Match object; span=(0, 0), match=''> 。而對(duì)于Match對(duì)象,除了None會(huì)被解釋為False,其余的任何匹配即使是空字符串也會(huì)被解釋為True。因此誤報(bào)。
加括號(hào)后匹配符合預(yù)期:
import re
XZQH_PATTERN = (r"^[^省市區(qū)縣村路街鄉(xiāng)0-9a-zA-Z]+省$|"
r"^(?!.*[一二三四五六七八九十]門市$)[^區(qū)縣村路街鄉(xiāng)]*[^超小魚0-9a-zA-Z]市$|"
r"^[^縣鎮(zhèn)區(qū)村路街鄉(xiāng)]*[^小景勝假務(wù)東西南北中社業(yè)發(fā)港住車游護(hù)園校舍活墅工0-9a-zA-Z一二三四五六七八九十]區(qū)$|"
r"縣$")
def process_one(address: str):
"""
判斷單條地址是否僅包含行政區(qū)劃
:param address:
:return: 是:True 否:False
"""
if re.search("自治區(qū)", address):
address = re.sub("自治區(qū)", "省", address)
return re.search(XZQH_PATTERN, address)
if __name__ == '__main__':
print(process_one("xx小區(qū)")) # None
2.驗(yàn)證
s1 = 'a' 'b' 'c'
s2 = ('a' 'c'
'b')
s3 = 'a' 'c'
'b'
print(f's1: {s1}')
print(f's2: {s2}')
print(f's3: {s3}')
# s1: abc
# s2: acb
# s3: ac
到此這篇關(guān)于python中字符串自動(dòng)拼接的示例代碼的文章就介紹到這了,更多相關(guān)python 字符串自動(dòng)拼接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Python對(duì)哥德巴赫猜想進(jìn)行檢驗(yàn)和推理
數(shù)學(xué)是一個(gè)奇妙的東西,對(duì)此,也衍生出了許多的悖論與猜想。這篇文章會(huì)對(duì)哥德巴赫猜想用編程語(yǔ)言進(jìn)行檢驗(yàn)和推理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12
pandas.DataFrame刪除/選取含有特定數(shù)值的行或列實(shí)例
今天小編就為大家分享一篇pandas.DataFrame刪除/選取含有特定數(shù)值的行或列實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
windows系統(tǒng)下Boost.Python的配置和使用方法(新手教學(xué))
Boost.Python是Boost庫(kù)的一部分,Boost庫(kù)本身包含了許多其他有用的庫(kù),這篇文章主要介紹了windows系統(tǒng)下Boost.Python的配置和使用方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-01-01
Python使用sql語(yǔ)句對(duì)mysql數(shù)據(jù)庫(kù)多條件模糊查詢的思路詳解
這篇文章主要介紹了Python使用sql語(yǔ)句對(duì)mysql數(shù)據(jù)庫(kù)多條件模糊查詢的思路詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Python制作腳本幫女朋友搶購(gòu)清空購(gòu)物車
這篇文章主要介紹了Python制作的搶購(gòu)清空購(gòu)物車的腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
基于Python實(shí)現(xiàn)簡(jiǎn)單的定時(shí)器詳解
所謂定時(shí)器,是指間隔特定時(shí)間執(zhí)行特定任務(wù)的機(jī)制。幾乎所有的編程語(yǔ)言,都有定時(shí)器的實(shí)現(xiàn)。這篇文章主要介紹的是通過(guò)Python實(shí)現(xiàn)的定時(shí)器,感興趣的可以跟隨小編學(xué)習(xí)一下2021-12-12

