Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unicode(UTF-8)可以';不能正确显示吗?(Python)_Python_Macos_Python 3.x_Unicode_Python Unicode - Fatal编程技术网

Unicode(UTF-8)可以';不能正确显示吗?(Python)

Unicode(UTF-8)可以';不能正确显示吗?(Python),python,macos,python-3.x,unicode,python-unicode,Python,Macos,Python 3.x,Unicode,Python Unicode,我在Pyton中有以下代码: # myFile.csv tend to looks like: # 'a1', 'ふじさん', 'c1' # 'a2', 'ふじさん', 'c2' # 'a3', 'ふじさん', 'c3' s = u"unicodeText" # unicodeText like, ふじさん بعدة أش 일본富士山Ölkələr with codecs.open('myFile.csv', 'w+', 'utf-8') as f: # codecs

我在Pyton中有以下代码:

# myFile.csv tend to looks like:
# 'a1',   'ふじさん',   'c1'
# 'a2',   'ふじさん',   'c2'
# 'a3',   'ふじさん',   'c3'

s = u"unicodeText" # unicodeText like, ふじさん بعدة أش  일본富士山Ölkələr
with codecs.open('myFile.csv', 'w+', 'utf-8') as f: # codecs open
    f.write(s.encode('utf-8', 'ignore'))
  • 我用Vim编辑代码,用Vim打开“myFile.csv”
  • 它可以成功地显示来自终端的unicode文本
  • 但无法从Excel或浏览器中显示unicode文本
  • 我的平台是osx
  • 我不知道这是我的配置问题还是我的编码错误,如果你有任何想法,请告诉我。非常感谢


    打开
    更改为
    编解码器。打开

    感谢您指出f.close(),已删除。

    codecs.open打开一个包装好的读写器,它将为您进行编码/解码。因此,您无需对字符串进行编码即可进行写入。您需要在open调用中传递'ignore'参数

    with open('myFile.csv', 'w+', 'utf-8', 'ignore') as f:
        f.write(s)
    
    请注意,在使用with语句时,不需要调用close

    最初的答案是:

    open的第三个参数是需要整数的缓冲。 您应该按如下方式写入并传递编码:

    with open('myFile.xls', 'w+', encoding='utf-8') as f:
    
    请注意,您是以文本模式打开文件的。无需对字符串进行编码即可写入

    另外,您的文件模式“w+”有点奇怪。我不确定,但我想它会截断你的文件。如果要附加到文件,应使用“a”作为模式。

    codecs.open打开一个包装的读写器,该读写器将为您进行编码/解码。因此,您无需对字符串进行编码即可进行写入。您需要在open调用中传递'ignore'参数

    with open('myFile.csv', 'w+', 'utf-8', 'ignore') as f:
        f.write(s)
    
    请注意,在使用with语句时,不需要调用close

    最初的答案是:

    open的第三个参数是需要整数的缓冲。 您应该按如下方式写入并传递编码:

    with open('myFile.xls', 'w+', encoding='utf-8') as f:
    
    请注意,您是以文本模式打开文件的。无需对字符串进行编码即可写入

    另外,您的文件模式“w+”有点奇怪。我不确定,但我想它会截断你的文件。如果要附加到文件,应使用“a”作为模式。

    codecs.open打开一个包装的读写器,该读写器将为您进行编码/解码。因此,您无需对字符串进行编码即可进行写入。您需要在open调用中传递'ignore'参数

    with open('myFile.csv', 'w+', 'utf-8', 'ignore') as f:
        f.write(s)
    
    请注意,在使用with语句时,不需要调用close

    最初的答案是:

    open的第三个参数是需要整数的缓冲。 您应该按如下方式写入并传递编码:

    with open('myFile.xls', 'w+', encoding='utf-8') as f:
    
    请注意,您是以文本模式打开文件的。无需对字符串进行编码即可写入

    另外,您的文件模式“w+”有点奇怪。我不确定,但我想它会截断你的文件。如果要附加到文件,应使用“a”作为模式。

    codecs.open打开一个包装的读写器,该读写器将为您进行编码/解码。因此,您无需对字符串进行编码即可进行写入。您需要在open调用中传递'ignore'参数

    with open('myFile.csv', 'w+', 'utf-8', 'ignore') as f:
        f.write(s)
    
    请注意,在使用with语句时,不需要调用close

    最初的答案是:

    open的第三个参数是需要整数的缓冲。 您应该按如下方式写入并传递编码:

    with open('myFile.xls', 'w+', encoding='utf-8') as f:
    
    请注意,您是以文本模式打开文件的。无需对字符串进行编码即可写入

    另外,您的文件模式“w+”有点奇怪。我不确定,但我想它会截断你的文件。如果要附加到文件,则应使用“a”作为模式。

    您似乎试图以文本模式打开文件(因为您指定了编码),但随后尝试写入二进制数据(因为您在将文本写入文件之前对其进行了编码)。您需要以二进制形式打开文件并写入编码文本,或者以文本形式打开文件并写入文本

    此外,将其作为文本打开的尝试甚至不起作用,因为您正在传递
    utf-8
    作为缓冲参数,而不是
    编码
    参数。见`

    但即使你做得正确,这仍然不能真正帮助你处理Excel文件,因为这些文件有一个复杂的二进制结构。我建议您使用类似的方法来读取和写入xls文件

    下面是一个适用于.csv的简单示例:

    with open('file.csv', 'w', encoding='utf-8') as fh:
        fh.write('This >µ< is a unicode GREEK LETTER MU\n')
    
    打开('file.csv','w',encoding='utf-8')作为fh的
    :
    fh.write('This>µ<是unicode希腊字母MU\n')
    
    或者

    with open('file.csv', 'wb') as fh:
        fh.write('This >µ< is a unicode GREEK LETTER MU\n'.encode('utf-8'))
    
    打开('file.csv',wb')作为fh的
    :
    fh.write('This>µ<是unicode希腊字母MU\n'.encode('utf-8'))
    
    您似乎试图以文本模式打开文件(因为您指定了编码),但随后尝试写入二进制数据(因为您在将文本写入文件之前对其进行了编码)。您需要以二进制形式打开文件并写入编码文本,或者以文本形式打开文件并写入文本

    此外,将其作为文本打开的尝试甚至不起作用,因为您正在传递
    utf-8
    作为缓冲参数,而不是
    编码
    参数。见`

    但即使你做得正确,这仍然不能真正帮助你处理Excel文件,因为这些文件有一个复杂的二进制结构。我建议您使用类似的方法来读取和写入xls文件

    下面是一个适用于.csv的简单示例:

    with open('file.csv', 'w', encoding='utf-8') as fh:
        fh.write('This >µ< is a unicode GREEK LETTER MU\n')
    
    打开('file.csv','w',encoding='utf-8')作为fh的
    :
    fh.write('This>µ<是unicode希腊字母MU\n')
    
    或者

    with open('file.csv', 'wb') as fh:
        fh.write('This >µ< is a unicode GREEK LETTER MU\n'.encode('utf-8'))
    
    打开('file.csv',wb')作为fh的
    :
    fh.write('This>µ<是unicode希腊字母MU\n'.encode('utf-8'))
    
    您似乎试图以文本模式打开文件(因为您指定了编码),但随后尝试写入二进制数据(因为您在将文本写入文件之前对其进行了编码)。您需要以二进制形式打开文件并写入编码文本,或者以文本形式打开文件并写入文本

    此外,将其作为文本打开的尝试甚至不起作用,因为您正在传递
    utf-8
    作为缓冲参数,而不是
    编码
    参数。见`

    但是,即使你做得正确,这仍然不能真正帮助你处理Excel文件