python - 解析未在 Python3 中注册 0 的数字字符串
问题描述
我有这段代码可以在 Python 中重新格式化字符串。所以'abc123'可以是'a1b2c3'或'1a2b3c'或'1b3a2c'等等。基本上排列规则是一个字母跟随一个数字,一个数字跟随一个字母。据我所知,它适用于除 1 之外的所有情况。当字符串中某处存在零时,程序在解析时完全忽略它,就好像它是一个空格一样。因此,如果输入为“0abc12”,则输出应为“0a1b2c”时变为“a1b2c”。我怎样才能解决这个问题?
def reformat(s: str) -> str:
nums = []
chars = []
new_str = ""
for char in s:
try:
if int(char):
nums.append(char)
except ValueError:
chars.append(char)
if len(chars) == len(nums):
for i in range(len(chars)):
new_str += chars[i] + nums[i]
elif len(chars) == len(nums) + 1:
for i in range(len(nums)):
new_str += chars[i] + nums[i]
new_str += chars[-1]
elif len(nums) == len(chars) + 1:
for i in range(len(chars)):
new_str += nums[i] + chars[i]
new_str += nums[-1]
else:
new_str = ""
return new_str
解决方案
这行:if int(char):
是问题。
int('0')
等于0
- 并且语句与 -if 0:
相同,if False:
因此当 char 为 0 时,以下行不会运行。
尝试删除 if 语句,try except 子句应该足够了。
推荐阅读
- html - Web.config 重定向
- html - Flexbox 上的菱形网格
- python - 使用 Pandas 与 MySQL 读取巨大的 CSV 文件
- javascript - 带有反应比较示例的 jquery
- regex - nginx 位置正则表达式设置仅在指定的 url 上返回 404
- javascript - 如何在 JS 中过滤多个字符串?
- c# - LiveChart 不显示 x 轴 WPF 上的所有标签
- c - 我想让我的素数测距仪程序在 C 中更快
- angular - Firestore - 用户最喜欢的数据结构建议
- fedora - 无法在 Fedora 28 中构建 gnome-system-tools [glib-compile-schemas not found]