Как сохранить документ с другим именем, если определенная строка содержит специальный символ? - PullRequest
2 голосов
/ 17 октября 2019

У меня есть нормальный document.save, я пытаюсь создать оператор if, который будет сохранен как failed.docx, если этот символ * появится в столбце No.

Какя могу сделать это?

Ниже приведен весь код, с которым я работаю над созданием файла docx.

Вместо того, чтобы искать столбец No, будет лучше увидеть, находится ли * внутри row[2]. В основном потому, что все, что там есть, будет классифицироваться как no.

vars = []
for idx,i in enumerate(info):
    var = IntVar(value=0)
    vars.append(var)
    lblOption = Label(main,text=i)
    btnYes = Radiobutton(main, text="Yes", variable=var, value=2)
    btnNo = Radiobutton(main, text="No", variable=var, value=1)
    btnNa = Radiobutton(main, text="N/A", variable=var,value=0)
    lblOption.grid(column=4,row=idx, sticky = W)
    btnYes.grid(column=1,row=idx)
    btnNo.grid(column=2,row=idx)
    btnNa.grid(column=3,row=idx)

document = Document()

#add table
table = document.add_table(1, 4)
#style table
table.style = 'Table Grid'

#populate header row
heading_cells = table.rows[0].cells
heading_cells[0].text = "Options"
heading_cells[1].text = "Yes"
heading_cells[2].text = "No"
heading_cells[3].text = "N/a"

for idx, item in enumerate(vars):
    cells = table.add_row().cells
    cells[0].text = info[idx]  # gets the option name
    val = item.get()  #radiobutton value
    if val == 2:  # checks if yes
        cells[1].text = "*"
    elif val == 1:   # checks if no
        cells[2].text = "*"
    elif val == 0:   # checks if N/A
        cells[3].text = "*"

#save doc
document.save("test.docx")

Вот куда я попал, но определенно не правильный способ сделать это:

   if "*" in cells[2]:
       print("true")
       #do not save as document.save("test.docx")
       #but save as document.save("Failed.docx")

ОБНОВЛЕНИЕ

Я поднялся здесь:

for x in cells[2].text:
    if "*" in x:
        print("True")
    else:
        print("False")

Если выбрано No, оно выводит True, но если его нет, то нетделать что-нибудь, я в замешательстве, почему? ...

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Ты так близко! добавьте .text конец вашего cells[2].

Вот как это должно выглядеть:

 if "*" in cells[2].text:
     print("true")
     document.save("Failed.docx")
 else:
     document.save("test.docx")
1 голос
/ 17 октября 2019

Я не понимаю вопроса. Вы спрашиваете, как изменить имя документа или как правильно проверить наличие символа «*»?

Смена имени проста;просто используйте переменную.

docname = "test.docx"

for idx, item in enumerate(vars):
    cells = table.add_row().cells
    cells[0].text = info[idx]  # gets the option name
    val = item.get()  #radiobutton value
    if val == 2:  # checks if yes
        cells[1].text = "*"
    elif val == 1:   # checks if no
        cells[2].text = "*"
        docname = "failed.docx"
    elif val == 0:   # checks if N/A
        cells[3].text = "*"
        docname = "failed.docx"

document.save(docname)
...