【问题标题】:Python, Openpyxl, search Excel column for substring, add to another columnPython,Openpyxl,在 Excel 列中搜索子字符串,添加到另一列
【发布时间】:2017-05-28 03:54:17
【问题描述】:

我在一个 Excel 电子表格中有三列。我正在尝试使用 Openpyxl 2.4.7、Excel 2016 和 Pycharm 2016.3.2 来实现我的目标。

|    Type    |             Name            |            Fits            |             Column D              |
|------------|-----------------------------|----------------------------|-----------------------------------|
| Universal  | Product A: Universal Fit    |                            | Blank                             |
| Automation | Product B: Chevrolet, Ford  | Chevrolet, GMC, Cadillac   | Chevrolet, Ford, GMC, Cadillac    |
| Automation | Product C: Chevrolet, Honda | Chevrolet, Cadillac, Honda | Chevrolet, Honda, Cadillac, Honda |
| Universal  | Product D: Universal Fit    |                            | Blank                             |

我正在尝试在“名称”和“适合”列中搜索汽车名称,然后将它们添加到 D 列,但我完全不知所措。我一直在尝试:

import openpyxl, pprint
print('Opening workbook...')
wb=openpyxl.load_workbook('updatedSheet.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')

COLUMN_D_DICT={'Chevrolet':'Chevrolet','GM':'GMC', 'Cadillac':'Cadillac', 'Honda':'Honda'}

maxRow = sheet.max_row + 1
for rowNum in range(2, maxRow):
    name= sheet.cell(row=rowNum, column=2).value
    type = sheet.cell(row=rowNum, column=1).value
    if type == "Automation":
        if name in COLUMN_D_DICT:
            sheet.cell(row=rowNum, column=8).value = PLATFORM_UPDATES[name]
        else:
            sheet.cell(row=rowNum, column=8).value = ""
    else:
        sheet.cell(row=rowNum, column=8).value = ""

python 超级新手,所以只是尝试逐步完成,任何帮助将不胜感激!

【问题讨论】:

    标签: python excel openpyxl


    【解决方案1】:

    考虑以下示例:

    # Use a set() for your Keywords
    COLUMN_D_SET = set(['Chevrolet','GMC', 'Cadillac', 'Honda'])
    
    maxRow = sheet.max_row + 1
    for rowNum in range(1, maxRow):
        type = sheet.cell(row=rowNum, column=1).value
        # Concat Values from Column Name and Fits
        name= sheet.cell(row=rowNum, column=2).value
        name = name+' '+sheet.cell(row=rowNum, column=3).value
    
        # Define a empty list for the Column D Result
        value_D = []
        if type == "Automation":
            # Split by Blank
            for word1 in name.split(' '):
                # Split by ','
                for word in word1.split(','):
                    # Match if word in Set of Keywords 
                    # and not already in list of value_D
                    if word in COLUMN_D_SET and not word in value_D:
                        value_D.append(word)
    
        # Assing the aggreated list of words or a Empty list to Column D
        sheet.cell(row=rowNum, column=4).value = ', '.join(value_D)
    

    用 Python 测试:3.4.2

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      相关资源
      最近更新 更多