使用 Python 读取 csv 时将字节解析为 str
Parse bytes to str while reading csv with Python
而我 python 写入和读取 csv 文件 utf8 字符串的代码
import csv
test1='ab"cc"dd'.encode('utf8')
test2='bbb'.encode('utf8')
csv_file = open('test.csv','w')
writer= csv.writer(csv_file)
writer.writerow([test1,test2])
csv_file.close()
with open('test.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
print(spamreader)
for row in spamreader:
print(', '.join(row))
问题是当我阅读时得到的是 b'ab"cc"dd', b'bbb'
而不是 ab"cc"dd,bbb
如何解码该字符串(我必须将 utf8 放入 csv)?
您可以使用 decode() 函数将字节解码为字符串。
更多信息请点击此处:https://docs.python.org/3/library/stdtypes.html#bytes.decode
"b'ab""cc""dd'", b'bbb'".decode('utf-8')
如果它不能正常工作,在连接它们之前解码字符串(以字节表示)。
不需要手册encoding/decoding。使用您想要的特定编码打开文件,因为默认编码因 OS 配置而异。这被称为“Unicode 三明治”。 Encode/decode 当 writing/reading 文件并仅在 Python 脚本中使用 Unicode。
此外,csv.reader
和 csv.writer
需要 Unicode 字符串,因此提供编码字节字符串是不正确的。
import csv
test1 = 'ab"cc"dd'
test2 = 'bbb'
with open('test.csv', 'w', encoding='utf8', newline='') as csv_file:
writer= csv.writer(csv_file)
writer.writerow([test1,test2])
with open('test.csv', encoding='utf8', newline='') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
print(row)
print(', '.join(row))
['ab"cc"dd', 'bbb']
ab"cc"dd, bbb
此外,如果您希望您的 .CSV 文件在 Microsoft Excel 中可读,请使用 utf-8-sig
作为编码,否则它将无法正确检测 UTF-8。
而我 python 写入和读取 csv 文件 utf8 字符串的代码
import csv
test1='ab"cc"dd'.encode('utf8')
test2='bbb'.encode('utf8')
csv_file = open('test.csv','w')
writer= csv.writer(csv_file)
writer.writerow([test1,test2])
csv_file.close()
with open('test.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
print(spamreader)
for row in spamreader:
print(', '.join(row))
问题是当我阅读时得到的是 b'ab"cc"dd', b'bbb'
而不是 ab"cc"dd,bbb
如何解码该字符串(我必须将 utf8 放入 csv)?
您可以使用 decode() 函数将字节解码为字符串。 更多信息请点击此处:https://docs.python.org/3/library/stdtypes.html#bytes.decode
"b'ab""cc""dd'", b'bbb'".decode('utf-8')
如果它不能正常工作,在连接它们之前解码字符串(以字节表示)。
不需要手册encoding/decoding。使用您想要的特定编码打开文件,因为默认编码因 OS 配置而异。这被称为“Unicode 三明治”。 Encode/decode 当 writing/reading 文件并仅在 Python 脚本中使用 Unicode。
此外,csv.reader
和 csv.writer
需要 Unicode 字符串,因此提供编码字节字符串是不正确的。
import csv
test1 = 'ab"cc"dd'
test2 = 'bbb'
with open('test.csv', 'w', encoding='utf8', newline='') as csv_file:
writer= csv.writer(csv_file)
writer.writerow([test1,test2])
with open('test.csv', encoding='utf8', newline='') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
print(row)
print(', '.join(row))
['ab"cc"dd', 'bbb']
ab"cc"dd, bbb
此外,如果您希望您的 .CSV 文件在 Microsoft Excel 中可读,请使用 utf-8-sig
作为编码,否则它将无法正确检测 UTF-8。