李白清洁球 发表于 2024-7-6 20:32:00

求清洗数据

输入
data = """
03011MEA23EM002------ADI1R,03011MEA23EM001------ADI1R
03021MEA23EM002------ADI1R,03021MEA23EM001------ADI1R
03031MEA23EM002------ADI1R,03031MEA23EM001------ADI1R
03041MEA23EM002------ADI1R,03041MEA23EM001------ADI1R
03052MEA23EM002------ADI1LOC,03052MEA23EM001------ADI1R
03062MEA23EM002------ADI1LOC,03062MEA23EM001------ADI1R
03072MEA23EM002------ADI1LOC,03072MEA23EM001------ADI1R
03082MEA23EM002------ADI1LOC,03082MEA23EM001------ADI1R
"""

输出结果:
<1>所有的数据共有部分:
030MEA23EM002------ADI1,030MEA23EM001------ADI1R
<2>每条数据不一样的元素
11,R,11
21,R,21
31,R,31
41,R,41
52,LOC,52
62,LOC,62
72,LOC,72
82,LOC,82

这个是数据要进行清洗,我自己好多边都没实现。
030MEA23EM002------ADI1,030MEA23EM001------ADI1R,这个是数组里的通配公式。里面的就是纯粹的占位符。
例如把11,R,11代入通配公式,就能得到数组里第一条数据,依次类推。
有没有同学能不能帮我写个python,用来清洗数据。输出的结果,第一要有通配公式,第二,就是要有数组里的每条数据不同的值。

Twilight6 发表于 2024-7-6 20:32:01

import re

data = """
03011MEA23EM002------ADI1R,03011MEA23EM001------ADI1R
03021MEA23EM002------ADI1R,03021MEA23EM001------ADI1R
03031MEA23EM002------ADI1R,03031MEA23EM001------ADI1R
03041MEA23EM002------ADI1R,03041MEA23EM001------ADI1R
03052MEA23EM002------ADI1LOC,03052MEA23EM001------ADI1R
03062MEA23EM002------ADI1LOC,03062MEA23EM001------ADI1R
03072MEA23EM002------ADI1LOC,03072MEA23EM001------ADI1R
03082MEA23EM002------ADI1LOC,03082MEA23EM001------ADI1R
"""

lines = data.strip().split('\n')
common_tmp = r'030(\d{2})MEA23EM002------ADI1(+),030(\d{2})MEA23EM001------ADI1R'
pattern = re.compile(common_tmp)
print("匹配公式:", common_tmp)
unique_parts = []
for line in lines:
    match = pattern.match(line)
    if match:
      unique_parts.append(', '.join(match.groups()))

print("\n获取不同数据结果: ")
for part in unique_parts:
    print(part)
页: [1]
查看完整版本: 求清洗数据