将数组字符串格式化为逗号分隔文件

时间:2017-03-09 15:12:32

标签: python python-3.x

假设我有一个如下所示的数组。

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文件。

3 个答案:

答案 0 :(得分:4)

您可以使用regular expression

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

输出和@albert一样,但你不能调整它。

答案 1 :(得分:3)

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,它让我想起了这个问题)。这是你想要的吗?

答案 2 :(得分:0)

你需要有一个分隔符,没有它你就无法实现你的目标。获得后,您只需使用split方法即可。