1

I have a program which prints random value from a list in the cells of a table using python docx. The number of tables, cells and rows depend on user input. I need to compare cells of tables before inputing value in the same number cell in another table.

For example.

number_of_tables = 5 #input by user number_of_rows = 4 #input by user number_of_cols = 7 #input by user list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] docu = Document() for tablenum in range(number_of_tables): tablename = docu.add_table(rows = number_of_rows, cols = number_of_cols) for rowiteration in tablename.rows[0:]: for cells in rowiteration.cells: cells.text = random.choices(list) 

If here cell(0,0) in table 1 has 'a' I don't want to print in 'a' in cell(0,0) of table 2 and further more.

1 Answer 1

2

Basically, you want to chose a random value from the list, but exclude one (or more) value(s) - see also this question.

You should therefore construct another list without the value(s) that you want to exclude - example to exclude the value 'a' from the choice:

random.choice([s for s in list if s != 'a']) 

For your scenario, you will have to exclude all values from the same cell (r,c) in the other tables like this:

for tablenum in range(number_of_tables): tablename = docu.add_table(rows=number_of_rows, cols=number_of_cols) for r, rowiteration in enumerate(tablename.rows): for c, cells in enumerate(rowiteration.cells): exclude = [docu.tables[num].cell(r,c).text for num in range(tablenum)] cells.text = random.choice([s for s in list if s not in exclude]) 
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks. I could extract previous table from docu but was struggling to point/extract particular cell in that table to compare with current table cell.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.