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"^(?!.*[一二三四五六七八九十]門(mén)市$)[^區(qū)縣村路街鄉(xiāng)]*[^超小魚(yú)0-9a-zA-Z]市$|"
r"^[^縣鎮(zhèn)區(qū)村路街鄉(xiāng)]*[^小景勝假務(wù)東西南北中社業(yè)發(fā)港住車(chē)游護(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ì)被解釋為T(mén)rue。因此誤報(bào)。
加括號(hào)后匹配符合預(yù)期:
import re
XZQH_PATTERN = (r"^[^省市區(qū)縣村路街鄉(xiāng)0-9a-zA-Z]+省$|"
r"^(?!.*[一二三四五六七八九十]門(mén)市$)[^區(qū)縣村路街鄉(xiāng)]*[^超小魚(yú)0-9a-zA-Z]市$|"
r"^[^縣鎮(zhèn)區(qū)村路街鄉(xiāng)]*[^小景勝假務(wù)東西南北中社業(yè)發(fā)港住車(chē)游護(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+Pyecharts實(shí)現(xiàn)散點(diǎn)圖的繪制
散點(diǎn)圖是指在回歸分析中,數(shù)據(jù)點(diǎn)在直角坐標(biāo)系平面上的分布圖,散點(diǎn)圖表示因變量隨自變量而變化的大致趨勢(shì),據(jù)此可以選擇合適的函數(shù)對(duì)數(shù)據(jù)點(diǎn)進(jìn)行擬合。本文將利用Python Pyecharts實(shí)現(xiàn)散點(diǎn)圖的繪制,需要的可以參考一下2022-06-06
Python使用Flask結(jié)合DeepSeek開(kāi)發(fā)(實(shí)現(xiàn)代碼)
文章介紹了如何使用ollama部署DeepSeek大模型,并通過(guò)Python Flask和SSE技術(shù)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的對(duì)話應(yīng)用,代碼實(shí)現(xiàn)了模型的調(diào)用和結(jié)果展示,并討論了SSE不支持POST請(qǐng)求的問(wèn)題及解決方案,感興趣的朋友一起看看吧2025-02-02
python3.7簡(jiǎn)單的爬蟲(chóng)實(shí)例詳解
這篇文章主要介紹了python3.7簡(jiǎn)單的爬蟲(chóng)實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
python 標(biāo)準(zhǔn)庫(kù)原理與用法詳解之os.path篇
os.path模塊主要用于文件的屬性獲取,在編程中經(jīng)常用到,本文將帶你熟悉這個(gè)模塊并掌握它的用法,感興趣的朋友跟小編來(lái)看看吧2021-10-10
pycharm 使用心得(六)進(jìn)行簡(jiǎn)單的數(shù)據(jù)庫(kù)管理
功能簡(jiǎn)介:pycharm自帶了一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)插件,可以比較方便的進(jìn)行簡(jiǎn)單的數(shù)據(jù)庫(kù)操作。2014-06-06
Python正規(guī)則表達(dá)式學(xué)習(xí)指南
本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)的完整介紹及使用示例,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友一起學(xué)習(xí)吧2016-08-08
python網(wǎng)絡(luò)編程tcp客戶端及服務(wù)端解讀
Python的socket模塊提供了基本的網(wǎng)絡(luò)通信功能,包括創(chuàng)建socket對(duì)象、綁定地址、監(jiān)聽(tīng)連接、接受連接、發(fā)送和接收數(shù)據(jù)以及關(guān)閉連接等,TCP和UDP是常用的網(wǎng)絡(luò)協(xié)議,IP地址和端口號(hào)用于標(biāo)識(shí)通信端點(diǎn),通過(guò)這些功能,可以實(shí)現(xiàn)客戶端和服務(wù)器之間的網(wǎng)絡(luò)通信2025-01-01

