Строки, разделенные запятыми, чтобы превзойти ячейку с python - PullRequest
0 голосов
/ 06 февраля 2020

Я хотел бы получить sh содержимое строки в xls:

abc,[1,2],abc/er/t_y,def,[3,4],def/er/t_d,ghi,ghi/tr/t_p,jkl,[5],jkl/tr/t_m_n,nop,nop/tr/t_k

это мой пример кода (с использованием xlwt)

workbook = xlwt.Workbook()
sh = workbook.add_sheet("Sheet1")
def exporttoexcel ():  
    print("I am in print excel")
    rowCount = 1
    for row in finalvalue:  # in finalvalue abc,[1,2],abc/er/ty.. is stored as type= str
        colCount = 0
        for column in row.split(","):  
            sh.write(rowCount, colCount, column)
            colCount += 1
        rowCount += 1
    workbook.save("myxl.xls")

exporttoexcel()

при приеме данных В Excel есть несколько правил, которым нужно следовать

- column headers are main,ids,UI
- each cell have one value except ids [ids may or may not be there]
- after three columns it should move to the next row
- the second column i.e **id** should have only ids and if not available it should be kept as blank

, как превратить sh данные в Excel, который выглядит аналогично приведенным выше правилам?

 | A  | B | C |
1|main|ids|UI|
2|abc |1,2|abc/tr/t_y|
3|def |3,4|def/tr/t_d|
4|ghi |   |ghi/tr/t_p|
5|jkl |5  |jkl/tr/t_m_n|
6|nop |   |nop/tr/t_k|

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Если ваша проблема в том, как разбить входную строку на что-то, что вы можете обработать с помощью своего кода:

import re

content = 'abc,[1,2],abc/er/ty,def,[3,4],def/er/td,ghi,ghi/tr/tp,jkl,[5],jkl/tr/tm,nop,nop/tr/tk'

finalvalue = []
for match in re.finditer(r"(\w+),(\[\d+(?:,\d+)*\],)?([\w/]+)", content):
    finalvalue.append((
        match.group(1),
        None if match.group(2) is None else match.group(2)[1:-2],
        match.group(3)
    ))

print(finalvalue)

Результат:

[('abc', '1,2', 'abc/er/ty'), ('def', '3,4', 'def/er/td'), ('ghi', None, 'ghi/tr/tp'), ('jkl', '5', 'jkl/tr/tm'), ('nop', None, 'nop/tr/tk')]

Примечание: строки больше не сохраняются как строка, но как кортеж, так что вы можете просто немного добавить свой код.

0 голосов
/ 06 февраля 2020

Используйте регулярное выражение для проверки значения с помощью []

import re
m = re.search(r"\[(\w+)\]", column)

...