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

如何正确分割包含分数格式的字符串?

解决方法:精准分割指定斜杠而非所有斜杠

哈哈,这个坑我踩过!你用普通的split('/')会把字符串里所有斜杠都当成分割符,自然会把分数里的1/2拆成两半,这完全不是我们想要的效果对吧?

问题根源

你的目标是分割用来分隔卧室和浴室信息的斜杠,而不是字符串里所有斜杠。这个特殊斜杠的特征是被空格包围(比如/),而分数里的斜杠前后是数字,没有这种空格包围的格式。

具体解决方案

下面提供几种不同场景下的实现方式,你可以根据实际情况选择:

方案一:精准匹配标准分隔符 /

适合你给出的两个示例场景,分隔符是固定的「空格+斜杠+空格」格式:

import re

# 示例1测试
input_str1 = "1 Bedroom / 1 1/2 Bath"
result1 = re.split(r' / ', input_str1)
print(result1)  # 输出: ['1 Bedroom', '1 1/2 Bath']

# 示例2测试
input_str2 = "1 Bedroom / 1/2 Bath"
result2 = re.split(r' / ', input_str2)
print(result2)  # 输出: ['1 Bedroom', '1/2 Bath']

方案二:处理空格不固定的情况

如果分隔符前后的空格数量不确定(比如多个空格、单侧空格),可以用正则匹配任意数量的空格包围的斜杠:

import re

# 分隔符前后有多个空格的情况
input_str = "1 Bedroom   /  1 1/2 Bath"
result = re.split(r'\s+/\s+', input_str)
print(result)  # 输出: ['1 Bedroom', '1 1/2 Bath']

方案三:最通用的匹配(适配无空格分隔符)

如果分隔符可能没有空格,但分数里的斜杠一定在数字之间,可以用正则断言匹配「非数字前后的斜杠」:

import re

# 分隔符无空格的情况
input_str = "1 Bedroom/1 1/2 Bath"
# 匹配前面不是数字 或 后面不是数字的斜杠
result = re.split(r'(?<!\d)/|/(?!\d)', input_str)
# 清理分割后可能残留的空格
result = [part.strip() for part in result]
print(result)  # 输出: ['1 Bedroom', '1 1/2 Bath']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:04:48