Assuming it's a null-terminated string, you can cast the array to a char * and use its value. Here's an example where that's not the case.
>>> class Person(Structure): _fields_ = [("name", c_ubyte * 8), ('age', c_ubyte)]
...
>>> smith = Person((c_ubyte * 8)(*bytearray('Mr Smith')), 9)
>>> smith.age
9
>>> cast(smith.name, c_char_p).value
'Mr Smith\t'
"Mr Smith" fills up the array, so casting to c_char_p includes the value of the next field, which is 9 (ASCII tab), and who knows what else, however much until it reaches a null byte.
Instead you can iterate the array with join:
>>> ''.join(map(chr, smith.name))
'Mr Smith'
Or use a bytearray:
>>> bytearray(smith.name)
bytearray(b'Mr Smith')
Python 3:
>>> smith = Person((c_ubyte * 8)(*b'Mr Smith'), 9)
>>> bytes(smith.name).decode('ascii')
'Mr Smith'