我在csv文件中有一列,该列具有以普通文本形式编写的Unicode值(\ x)。我有以下代码(不是我的代码),我试图用它来解码此文本,但是在尝试使用它时会引发语法错误。
with open("fixed_datasetssscopy.csv", "r") as fp:
file_buffer = io.StringIO()
for line in fp.read().splitlines():
file_buffer.write(eval('''b"{}".decode('utf-8')'''.format(line)))
file_buffer.write('\n')
file_buffer.seek(0)
df = pandas.from_csv(file_buffer)
当我在IDE中打印它们时,查看引发错误的条目时,将它们括在引号“”中,即使在CSV文件本身中也没有。出现错误的某些条目的示例如下。
ER...in the end it's a job. So, fair dos. https:/asdasd
When i started using Gutenberg like a month ago, I didn't care for the workflow but now it makes it easy to do thin\xe2\x80\xa6 https:/asdasd
实际错误消息是:
Traceback (most recent call last):
File "C:/Users", line 8, in <module>
file_buffer.write(eval('''b"{}".decode('utf-8')'''.format(line)))
File "<string>", line 1
b""ER...in the end it's a job. So, fair dos. https://u",,,,,,,,,".decode('utf-8')
^
SyntaxError: invalid syntax
如何解决此错误?
答案 0 :(得分:0)
由于输入字符串中有\“,因此出现了错误。我对代码进行了一些更改,以使其正常工作。
快速修复
with open("fixed_datasetssscopy.csv", "r") as fp:
file_buffer = io.StringIO()
for line in fp.read().splitlines():
file_buffer.write(bytes(line, "utf-8").decode("unicode_escape"))
file_buffer.write('\n')
file_buffer.seek(0)
df = pandas.DataFrame.from_csv(file_buffer)
代码中的另一个问题是您使用pandas.from_csv
而不是pandas.DataFrame.from_csv
。
此外,建议您使用pandas.read_csv
而不是from_csv
。这是因为DataFrame.from_csv
现在已过时(请参见here)。
Pandas.read_csv
也比from_csv
快得多。您可以找到有关read_csv here
更好的解决方案
如果您的输入字符串具有实际的Unicode字符,则上述解决方案将不起作用。在您的示例中,它将以'
的形式输出\'
之类的字符
如果确定输入集中的所有字符均为ASCII文本,则可以继续使用上述解决方案
如果输入中包含ASCII序列,则可以手动替换输入中的“ \”。
这已经由rspeer here
完成