Próbuję zapisać listę danych do pliku csv. Ponieważ jest to lista ciągów bajtów, użyłem poniższy kodTypeError: kodowanie lub błędy bez argumentu łańcuchowego
with open(r"E:\Avinash\Python\extracting-drug-data\out.csv", "wb") as w:
writer = csv.writer(w)
writer.writerows(bytes(datas, 'UTF-8'))
Ale to prowadzi do następującego błędu:
TypeError: encoding or errors without a string argument
datas
jest listą ciągów bajtów.
print(datas)
daje
[b'DB08873', b' MOLSDFPDBSMILESInChIView Structure \xc3\x97Structure for DB08873 (Boceprevir) Close', b'394730-60-0', b'LHHCSNFAOIFYRV-DOVBMPENSA-N', b'Organic acids and derivatives ', b'Food increases exposure of boceprevir by up to 65% relative to fasting state. However, type of food and time of meal does not affect bioavailability of boceprevir and thus can be taken without regards to food. \r\nTmax = 2 hours;\r\nTime to steady state, three times a day dosing = 1 day;\r\nCmax]
że chce powyższa lista drukuje się w pierwszym rzędzie w csv z dekodowaniem unicode. To znaczy, \xc3\x97
powinien zostać przekonwertowany na odpowiadający mu znak.
Ponieważ chcesz przekonwertować bajty z powrotem na ciąg, czy nie powinno to być 'str (datas, 'UTF-8')' zamiast? (Czy nie powinieneś zastosować go do każdego z elementów, zamiast do całej listy?) –
Również w przypadku 'writerows', czy' datas' nie powinien być listą list? –
@tobias_k pokazuje 'TypeError: przymuszanie do str: potrzeba obiektu podobnego do bajtów, lista znaleziona' –