如何在Python中testing单元格坐标以更改数据?

我试图用Python来迁移一些数据。 我需要testing看看我是否有特定的列,然后如果单元格值是一个值,改变到特定的其他值。 所以我的问题是,如何做坐标testing。

我正在使用Python和Excel。 我需要读取excel文件,然后对数据进行更改,并输出新的,更改的excel文件。 我正在使用Python和PyCharm,现在尝试使用openpyxl。 我试过xlrd / xlwt,试着用csv做。 从sql到excel文件的数据,然后进行更改 – 这似乎是最简单的方法。

所以比如,在具体的情况下,我在第四栏有性别。 所以我尝试只指定第4列。 旧数据的值为“男性”或“女性”,新数据需要为数字代码,男性为1,女性为2。

for cellObj in row: if cellObj.coordinate == [4:row]: if cellObj.value == 'Male': cellObj.value = 1 elif cellObj.value == 'Female': cellObj.value = 2 

(对不起,我试图把问题的格式化,但代码不一样。)

这个代码是不正确的。 我不明白如何做到这一点。 我有本书“Automate The Boring Stuff With Python by Al Sweigart”。 我一直在寻找论坛和博客,但总是要知道确切的坐标。 这就是为什么我尝试使用特定的第4列,而不是在代码中testing以查看我需要的列。

编辑:

我无法添加到commant。 这里是所有的代码。 现在只得到1排。

 wb = openpyxl.load_workbook(file_location) sheet = wb.worksheets[0] for cellObj in sheet.rows[0]: print(cellObj.value), print(' | '), for row in sheet.iter_rows(): for row_count, cellObj in enumerate(row): if cellObj.coordinate == 'E{}'.format(row_count): print row_count print(cellObj.value), if cellObj.value == 'Male': cellObj.value = 1 print(cellObj.value) elif cellObj.value == 'Female': cellObj.value = 2 print(cellObj.value) 

我添加并更改sheet.iter_rows ….在这里: OpenPyXL +如何searchExcel中的单元格中的内容,如果内容符合search条件更新内容? 但是这也行不通。 在for循环,我不能这样做:

 for i in sheet: do this for each row "i" 

这种格式不起作用?

另外,在这里: OpenPyXL +如何在Excel中search单元格中的内容,并且如果内容符合search条件,则更新内容? 有人说可以做sheet.rows()来遍历每一行,但这又给出了元组错误。 TypeError:“元组”对象不可调用

编辑

更新之后,这似乎是一个更好的解决scheme:

 for row in sheet.iter_rows(): for cellObj in row: if cellObj.column == 'E': # do something 

老答案

坐标以A1的forms。 你需要testing这样的东西:

 for row_count, cellObj in enumerate(row, 1): if cellObj.coordinate == 'D{}'.format(row_count):