V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
exoticknight
V2EX  ›  问与答

python 的 print 跨平台问题

  •  
  •   exoticknight · Mar 19, 2015 · 3096 views
    This topic created in 4068 days ago, the information mentioned may be changed or developed.
    在写一python脚本,大致做的事情是取到网页后用bs4选取内容输出。
    那么问题来了。
    已经在开头加上# -*- coding: utf-8 -*-,并且文件是utf-8编码。
    print的时候,windows下需要使用encode,而Linux下不用。
    然而我希望同一个脚本能在windows和Linux上都能运行,应该怎么办?
    每次print都判断好像很蠢的样子……
    谢谢大家。
    10 replies    2015-03-20 22:33:58 +08:00
    loading
        1
    loading  
       Mar 19, 2015   ❤️ 1
    你输出到log文件就好很多了,试试。
    clino
        2
    clino  
       Mar 19, 2015   ❤️ 1
    包装一个函数,将字符串都尝试decode成unicode以后再print
    因为print u"中文" 在两个平台上都是可以的
    Sylv
        3
    Sylv  
       Mar 19, 2015 via iPhone
    Sylv
        4
    Sylv  
       Mar 19, 2015 via iPhone   ❤️ 1
    想要跨环境的话,这是一种解决办法:
    print unicode.encode(sys.stdout.encoding)
    exoticknight
        5
    exoticknight  
    OP
       Mar 19, 2015
    @clino
    @Sylv
    直接使用u"...."能打印出来一部分
    但是遇到符号'・',就出问题了,编码是/u30fb
    似乎是gbk没有这个符号?
    使用了encode('gb18030')之后虽然变成了??,但是起码看不到可恶的UnicodeEncodeError……
    icedx
        6
    icedx  
       Mar 19, 2015 via Android   ❤️ 1
    封装print
    clino
        7
    clino  
       Mar 19, 2015
    @exoticknight windows下只能支持gb码的打印?如果是这样的话,弄一个gb码里没有的字符当然打不出来了
    66450146
        8
    66450146  
       Mar 19, 2015
    用 vagrant 运行就好了。。。。
    9hills
        9
    9hills  
       Mar 19, 2015 via iPhone
    和平台无关……
    aaaa007cn
        10
    aaaa007cn  
       Mar 20, 2015   ❤️ 1
    @exoticknight
    https://docs.python.org/2/library/codecs.html#codecs.encode
    Errors may be given to set the desired error handling scheme. The default error handler is 'strict' meaning that encoding errors raise ValueError (or a more codec specific subclass, such as UnicodeEncodeError). Refer to Codec Base Classes for more information on codec error handling.
    比如 print u"・".encode(errors="backslashreplace")
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5047 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 03:57 · PVG 11:57 · LAX 20:57 · JFK 23:57
    ♥ Do have faith in what you're doing.