Hi @JackBonnellDev,
I am not sure how familiar you are with IIC. The address in the send/receive is not the register address you are trying to write/read. It is the peripheral address, each IIC peripheral has one.
Then in the data argument you will add both the register and data you want to write.
You can check a discussion here
And an example of send here
What board are you targeting? As an alternative, you could use device tree overlays to insert the driver of the AXI IIC IP in Linux and then you should be able to open the i2c device and even use python-periphery
If you decide to go this route, I can give you more pointers.
Mario