将数组字符串格式化为逗号分隔的fi

2024-09-26 22:52:38 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个如下所示的数组。你知道吗

X = ['2.2    31452- MMMMM   25 EA       1.2 AC - Auto   Uni','20Eye      Customer: 300xxxx       ','Order Number: 215987 Salesperson: Barbara']

如您所见,没有可读的格式,因为它不是空格分隔或制表符分隔的。有些空格是单一的,有些则从2、3、4等不同。如何格式化数据,使其采用这种格式:

X = ['2.2,31452- MMMMM,25 EA,1.2 AC - Auto,Uni,20Eye,Customer: 300xxxx,Order Number: 215987,Salesperson: Barbara']

基本上,我想把结果写入一个csv文件。你知道吗


Tags: 数据numberauto格式ordercustomer数组ac
3条回答

你可以用regular expression来做。你知道吗

re.sub('  +', ',', '  '.join(X))

输出与@albert相同,但您不能调整它。你知道吗

X = ['2.2    31452- MMMMM   25 EA       1.2 AC - Auto   Uni', '20Eye      Customer: 300xxxx       ',
     'Order Number: 215987 Salesperson: Barbara']

delimiter = ','


def extract(s):
    SPACE = ' '
    result = []
    start = 0
    end = 0
    already_encounter_space = False
    continous_space = False
    for idx, c in enumerate(s):
        if c != SPACE:
            if already_encounter_space:
                if continous_space:
                    result.append(s[start:end + 1])
                    start = idx
                else:
                    end = idx
            else:
                end = idx
            already_encounter_space = False
            continous_space = False
        else:
            if already_encounter_space:
                continous_space = True
            else:
                already_encounter_space = True
    result.append(s[start:end + 1])
    return result


tmp = list()
for s in X:
    tmp.extend(extract(s))

X = [delimiter.join(tmp)]

print X

我们得到了这样的答案:

['2.2,31452- MMMMM,25 EA,1.2 AC - Auto,Uni,20Eye,Customer: 300xxxx,Order Number: 215987 Salesperson: Barbara']

请注意,最后一个没有用逗号分隔,因为中间只有一个空格(Thx到@YamanJain,他让我想起了这个gotcha)。这就是你想要的吗?你知道吗

你需要有一个定界符,没有它你无法实现你的目标。一旦得到它,就可以简单地使用split方法。你知道吗

相关问题 更多 >

    热门问题