当前位置: 代码网 > it编程>前端脚本>Python > python中字符串自动拼接的示例代码

python中字符串自动拼接的示例代码

2025年12月26日 Python 我要评论
python中的字符串自动拼接发生在编译成字节码的时期,只会对字符串字面量进行自动拼接。对于同一行:相邻字符串字面量之间如果只包含空格,会自动拼接为一个整体对待。对于不同行:需要在外侧用括号表明是一个

python中的字符串自动拼接发生在编译成字节码的时期,只会对字符串字面量进行自动拼接。

  • 对于同一行:相邻字符串字面量之间如果只包含空格,会自动拼接为一个整体对待。
  • 对于不同行:需要在外侧用括号表明是一个整体,python才会自动拼接。不带括号时换行会当作不同的字符串。

1.背景

在用下面正则判断输入地址是否属于仅行政区划地址时:

import re

xzqh_pattern = r"^[^省市区县村路街乡0-9a-za-z]+省$|"
r"^(?!.*[一二三四五六七八九十]门市$)[^区县村路街乡]*[^超小鱼0-9a-za-z]市$|"
r"^[^县镇区村路街乡]*[^小景胜假务东西南北中社业发港住车游护园校舍活墅工0-9a-za-z一二三四五六七八九十]区$|"
r"县$"


def process_one(address: str):
    """
    判断单条地址是否仅包含行政区划
    :param address:
    :return: 是:true  否:false
    """
    if re.search("自治区", address):
        address = re.sub("自治区", "省", address)
    return re.search(xzqh_pattern, address)


if __name__ == '__main__':
    print(process_one("xx小区"))  # <re.match object; span=(0, 0), match=''>

正则中前已经排除不能为,但是正则的匹配结果返回了空字符串,相当于命中了上面的正则返回了true,不符合匹配预期。

排查发现原因在于python的字符串自动拼接规则,因为字符串换行且未用()包裹,所以上面的正则匹配串实际上只有 ^[^省市区县村路街乡0-9a-za-z]+省$|是有效的。

因为|后面是空,测试case没有匹配省结尾,但会匹配后面分支的空字符串,所以结果才会是 <re.match object; span=(0, 0), match=''> 。而对于match对象,除了none会被解释为false,其余的任何匹配即使是空字符串也会被解释为true。因此误报。

加括号后匹配符合预期:

import re

xzqh_pattern = (r"^[^省市区县村路街乡0-9a-za-z]+省$|"
                r"^(?!.*[一二三四五六七八九十]门市$)[^区县村路街乡]*[^超小鱼0-9a-za-z]市$|"
                r"^[^县镇区村路街乡]*[^小景胜假务东西南北中社业发港住车游护园校舍活墅工0-9a-za-z一二三四五六七八九十]区$|"
                r"县$")


def process_one(address: str):
    """
    判断单条地址是否仅包含行政区划
    :param address:
    :return: 是:true  否:false
    """
    if re.search("自治区", address):
        address = re.sub("自治区", "省", address)
    return re.search(xzqh_pattern, address)


if __name__ == '__main__':
    print(process_one("xx小区"))  # none

2.验证

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

到此这篇关于python中字符串自动拼接的示例代码的文章就介绍到这了,更多相关python 字符串自动拼接内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com