【发布时间】:2017-11-17 06:07:10
【问题描述】:
我正在使用 python 正则表达式从数据库中提取维度信息。该列中的条目如下所示:
23 cm
43 1/2 cm
20cm
15 cm x 30 cm
我需要的只是条目的宽度(因此对于带有“x”的条目,只有第一个数字),但正如您所见,值到处都是。
根据我在documentation 中的理解,您可以使用他们的位置访问匹配中的组,所以我想我可以根据返回的组数和每个组的内容来确定条目的类型索引。
我目前使用的表达式是^(\d{2})\s?(x\s?(\d{2}))?(\d+/\d+)?$,但它并不完美,它返回了许多无用的组。有没有更有效更合适的方法?
编辑:我需要每一行的数字。当只有一个数字时,暗示只测量了宽度(包括任何小数部分,例如第 2 行)。当有两个数字时,也测量了高度,但我只需要第一个数字的宽度(例如最后一行)
【问题讨论】:
-
你想要单位 (
cm) 还是只想要数值? -
这些是您能遇到的唯一值示例,还是可以与其他数据混合使用?例如您的字符串是否总是以数字开头并且除了这些尺寸之外不包含其他任何内容?
-
为什么这个
43 1/2和其他的不一样?或者只是^(?:(?!cm).)+ -
这些似乎是数据集中唯一的变化。 @sln 1/2 表示 43.5。不幸的是,给我数据的人并不真正关心格式化它。
-
@ShammelLee 只是数值
标签: python regex csv numbers data-processing