Python 我应该如何解析这些数据?

Python 我应该如何解析这些数据?,python,regex,parsing,Python,Regex,Parsing,我目前正在导入一些csv并使用python解析数据。特别是有一列具有不同的格式,我不确定应该使用哪种方法来解析数据 该列中的数据可以具有以下格式 5.00 LBS 5.00LBS 5.00lbs 5LBS 5 LBS 5 kg 或任何其他单位 我想做的是将数字存储在一个变量中,将单位存储在另一个变量中,以便以后在我的Django模型中使用它们并创建一个对象 import csv def import_measurements(request): path = 'measurements

我目前正在导入一些csv并使用python解析数据。特别是有一列具有不同的格式,我不确定应该使用哪种方法来解析数据

该列中的数据可以具有以下格式

5.00 LBS
5.00LBS
5.00lbs
5LBS
5 LBS
5 kg
或任何其他单位

我想做的是将数字存储在一个变量中,将单位存储在另一个变量中,以便以后在我的
Django
模型中使用它们并创建一个对象

import csv
def import_measurements(request):
    path = 'measurements.csv'
    with open(path) as f:
        reader = csv.reader(f)
        for row in reader:
            # unit = row[0] string portion
            # weight =  row[0] number portion
            created = Measurements.objects.create(
                           unit=unit,
                           weight=weight
            )

任何帮助都将不胜感激

显然,您的值由两部分组成:一个数字(十进制或非十进制)和一个单位(磅或千克),由可选空格分隔

我将使用以下格式的正则表达式:

(\d(?:\.\d{2})?)\s?((?:lbs)|(?:kg))
使用
i
标志忽略案例

第一组包含
5
5.00
,第二组包含单元。单位小写,就在这里了

作为练习,读者可以处理各种十进制分隔符(
),并支持千个分隔符

一个更为宽松但因此不那么严格的表达可以是:

([0-9.]+)\s?(\w+)
您可以使用regx:

>>> doc
'5.00 LBS\n5.00LBS\n5.00lbs\n5LBS\n5 LBS\n5 kg'
>>> re.findall('(\d+\.?\d*)\s*([a-zA-Z]+)',doc)
[('5.00', 'LBS'), ('5.00', 'LBS'), ('5.00', 'lbs'), ('5', 'LBS'), ('5', 'LBS'), ('5', 'kg')]

如果您显示您的代码,甚至从
csv
提取数据,那么我们可以帮助您!这样做的目的不是给你答案,而是帮助你解决问题!你的脸!我要求的是一种方法,而不是解决方案。我可以而且宁愿自己想出解决办法。我只想了解一些可能的技术信息,这些技术可以用来高效、正确地完成这项工作。谢谢