python - Python程序获取一个人身高的数值和单位?
问题描述
解决方案
您的代码只需进行一些更改即可根据指定输入的需要工作。smci 已经提出了一项更正建议:
正则表达式
'^\d*.*\d*|'
太松散,因为每个字符都是可选的(*
允许 0 次或更多次重复)。所以它会匹配''。大概你需要至少一位数字。所以它应该^\d+.?\d*
也是你的尾随|
再次允许它匹配空字符串,你不需要那个。
我合并了这个和一些更多的变化 - 见评论:
numbers = re.findall('\d+\.?\d*', value) # don't overwrite value, you need it below
if len(numbers) > 0:
number = numbers[0]
if len(numbers) > 1:
number += '.' + numbers[1] # add the decimals
# replace the Japanese units with metric ones
value = value.replace('\xe7\xb1\xb3', 'm').replace('\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x81', 'cm')
units = re.findall('m|cm', value)
unit = '?' # set default unit in case none present
if len(units) > 0:
unit = units[0]
推荐阅读
- python - Python 导入错误无法在 PyQt5 Ubuntu 16 中导入名称 QtGui
- r - 如何在模块化闪亮应用程序中插入 UI?
- javascript - 向我的 G-Sheet 提交数据后刷新页面
- pytorch - 将 Captum 与 Pytorch Lightning 一起使用?
- encoding - 如何使用 VLC http 流式传输 FFMPEG 编码的帧
- lua - lua table.sort 因“尝试将 nil 与字符串进行比较”而崩溃
- mongodb - 更新:将字段移动到另一个字段数组中
- javascript - console.log 显示数据但在 if 条件 javascript 中出现错误(使用内部反应组件)
- rust - 如何在 Rust 中旋转链表?
- html - 从缩进的文本树创建 html 列表呈现