You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字符串中短横线(-)与长横线(—)的分割及替换问题

解决Python中两种横线的分割与替换问题

问题1:能否同时按短横线(-)和长横线(—)分割字符串?

完全可以,用Python的re模块(正则表达式)就能实现。正则支持指定多个分隔符,把两种横线放在字符集里即可:

import re
from pathlib import Path

desktop = Path("你的桌面路径")
result = list(desktop.glob("*.pdf"))

for file_path in result:
    filename = file_path.name
    # 同时按短横线和长横线分割
    parts = re.split(r'[-—]', filename)
    # 后续处理分割后的parts

这里的r'[-—]'是正则字符集,表示匹配短横线-或者长横线—中的任意一个,以此作为分割依据。

问题2:能否将长横线(—)替换为短横线(-)?

当然可以,之前用ASCII码失败是因为长横线—不属于ASCII字符(它是Unicode的U+2014字符),直接用字符本身或者Unicode转义符替换即可:

for file_path in result:
    filename = file_path.name
    # 把长横线替换成短横线
    normalized_filename = filename.replace('—', '-')
    # 再按短横线分割
    parts = normalized_filename.split('-')

如果直接输入长横线有问题,也可以用Unicode转义写法:filename.replace('\u2014', '-'),效果完全一致。

问题3:为什么之前用ASCII码调用split和replace失败?怎么实现同时分割?

你之前失败的核心原因是长横线不是ASCII字符:alt+0151对应的是Windows扩展ASCII的字符,但Python中字符串默认是Unicode编码,直接用ASCII码(比如chr(151))去匹配,得到的字符和实际文件名里的长横线(Unicode U+2014)不是同一个,所以匹配失败。

要实现同时分割,最直接的方法就是用前面提到的re.split()方案,无需先替换,一步到位完成分割。

内容的提问来源于stack exchange,提问作者josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:25:01