【问题标题】:Python split in a certain patternPython以某种模式分裂
【发布时间】:2020-03-31 02:49:14
【问题描述】:

我有这个数据

1 E1992 RED612 Cat Pinafore Dress Red 6-12 mths 5 5.05 0.00 25.25

使用拆分命令我只能这样拆分-

['1', 'E1992', 'RED612', 'Cat', 'Pinafore', 'Dress', 'Red', '6-12', 'mths', '5', '5.05', '0.00', '25.25']

但我想这样拆分-

['1', 'E1992', 'RED612', 'Cat Pinafore Dress Red', '6-12 mths', '5', '5.05', '0.00', '25.25']

例如,我在列表中的所有项目都以这种模式编写 -

4 E4117 WHI23 White 2-3 yrs 70 4.70 0.00 329.00
4 E4395 RED36Y Stripe Sun Hat Red 3-6 yrs 30 3.20 0.00 96.00

我想以类似的方式拆分它们

如果所有项目都遵循这种模式,我想知道是否可以使用一些正则表达式命令或任何其他命令来拆分它们。

【问题讨论】:

标签: python regex python-3.x list split


【解决方案1】:

这是结构数据,它类似于表格,因此您可以这样做:

line = '1 E1992 RED612 Cat Pinafore Dress Red 6-12 mths 5 5.05 0.00 25.25'
line = line.split()
output = line[:3] + [' '.join(line[3:-6])] + [' '.join(line[-6:-4])] + line[-4:]

您的输出将是:

['1', 'E1992', 'RED612', 'Cat Pinafore Dress Red', '6-12 mths', '5', '5.05', '0.00', '25.25']

【讨论】:

    【解决方案2】:

    如果你总是有一个 3-N-2-4 排列的片段(三块,后面是 N 块,后面是 2 块,再后面是 4 块),你可以组合第一个,中间(组合所有中间部分),最后一片:

    parts = your_string.split()
    parts[:3] + [" ".join(parts[3:-6])] \
              + [" ".join(parts[-6:-4])] \
              + parts[-4:]
    #['1', 'E1992', 'RED612', 'Cat Pinafore Dress Red', '6-12 mths', '5', '5.05', '0.00', '25.25']
    

    附:更新以结合年/月数据。我之前忽略了这个细节。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多