Python论坛  - 讨论区

标题:[python-chinese] urllib天气抓取

2006年12月09日 星期六 20:56

风向标 vaneoooo在gmail.com
星期六 十二月 9 20:56:16 HKT 2006

×î½üÓÃdjangoµÄ×öµÄС¶«Î÷ÐèÒªÓÐÄÇôһ¸öÌìÆøץȡµÄ¹¦ÄÜ¡£

Ä¿±êÒ³ÃæÈ磺http://weather.tq121.com.cn/mapanel/index1_new.php?city=%B1%B1%BE%A9

ÐèҪץȡ£º  Ççת¶àÔÆ

5¡æ~-5¡æ
ÕâÁ½ÐÐÎÄ×Ö

ÓÉÓÚÒ»Ö±ÍÏ×ÅÕýÔòûÓÐÉîÈ룬urllibÄ£¿éÒ²°­ÓÚÖÐÎÄÎĵµ¼¸½ü¿Õ°×¶øû°ì·¨Á˽â
²»µÃÒÔÔÚÕâÀïÇë½ÌÒ»ÏÂ


ÎÒ×Ô¼º³¢ÊÔÁËһЩ±¿×¾µÄ°ì·¨£¬½á¹ûÁ¬°ë¸ö×Ö·û¶¼Ã»·´À¡»ØÀ´
ÀÍÇëÓо­ÑéµÄÅóÓѸø¸ö˼·»òÂÔ¼ÓÖ¸µã¡£Ð»Ð»£¡
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061209/1510bb58/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月09日 星期六 21:30

清风 paradise.qingfeng在gmail.com
星期六 十二月 9 21:30:07 HKT 2006

用这个工具调试正则吧,简单一些
http://kodos.sourceforge.net/

On 12/9/06, 风向标 <vaneoooo在gmail.com> wrote:
> 最近用django的做的小东西需要有那么一个天气抓取的功能。
>
> 目标页面如:http://weather.tq121.com.cn/mapanel/index1_new.php?city=%B1%B1%BE%A9
>
> 需要抓取:
> 晴转多云
>
>
> 5℃~-5℃
> 这两行文字
>
> 由于一直拖着正则没有深入,urllib模块也碍于中文文档几近空白而没办法了解
> 不得以在这里请教一下
>
>
> 我自己尝试了一些笨拙的办法,结果连半个字符都没反馈回来
> 劳请有经验的朋友给个思路或略加指点。谢谢!
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to
>  python-chinese-request在lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>


-- 
Blog:
http://qingfeng.ushared.com/blog/
http://qingfeng.vox.com/

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月09日 星期六 22:16

WangXinxi wangxinxi在cs.hit.edu.cn
星期六 十二月 9 22:16:14 HKT 2006

#!/usr/bin/python
import urllib
def get_weather(city):
        city = city.decode("utf8")
        city = city.encode("gb2312");

        url = "http://weather.tq121.com.cn/mapanel/index1_new.php?city=%
s" % city
        s = urllib.urlopen(url)
        str = s.read().decode('gb2312');

        tmp = str.find('class="weather">')
        start = str.find('>', tmp) + 1
        end = str.find('', tmp)

        res = [str[start:end]]

        tmp = str.find('class="weatheren">')
        start = str.find('>', tmp) + 1
        end = str.find('', tmp)

        res.append(str[start:end])

        return res


if __name__ == "__main__" :
        print "City: ", 
        city = raw_input()
        w = get_weather(city);
        print w[0] , '\n',  w[1]

献丑了呀。

程序不能自动检测输入的字符的编码,而且没有用到正则表达式。
不过,还能用。


On Sat, 2006-12-09 at 20:56 +0800, 风向标 wrote:
> 最近用django的做的小东西需要有那么一个天气抓取的功能。
>  
> 目标页面如:http://weather.tq121.com.cn/mapanel/index1_new.php?city=%
> B1%B1%BE%A9
>  
> 需要抓取: 
>                                晴转多云
>                                 5℃~-5℃
> 
> 
> 这两行文字
>  
> 由于一直拖着正则没有深入,urllib模块也碍于中文文档几近空白而没办法了解
> 不得以在这里请教一下
>  
>  
> 我自己尝试了一些笨拙的办法,结果连半个字符都没反馈回来
> 劳请有经验的朋友给个思路或略加指点。谢谢!
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 12:52

Huang You Gong hygool在gmail.com
星期日 十二月 10 12:52:56 HKT 2006

在Wangxixi的基础上,开头添加:
import re

中间用正则表达逐行查找:
lines = s.readlines()
for line in lines:
       res = re.search( "(.*)", line )
       if res != None:
              print res.group( 1 )
       res = re.search( "(.*)", line )
       if res != None:
              print res.group( 1 )


On 12/9/06, WangXinxi <wangxinxi at cs.hit.edu.cn> wrote:
> #!/usr/bin/python
> import urllib
> def get_weather(city):
>        city = city.decode("utf8")
>        city = city.encode("gb2312");
>
>        url = "http://weather.tq121.com.cn/mapanel/index1_new.php?city=%
> s" % city
>        s = urllib.urlopen(url)
>        str = s.read().decode('gb2312');
>
>        tmp = str.find('class="weather">')
>        start = str.find('>', tmp) + 1
>        end = str.find('', tmp)
>
>        res = [str[start:end]]
>
>        tmp = str.find('class="weatheren">')
>        start = str.find('>', tmp) + 1
>        end = str.find('', tmp)
>
>        res.append(str[start:end])
>
>        return res
>
>
> if __name__ == "__main__" :
>        print "City: ",
>        city = raw_input()
>        w = get_weather(city);
>        print w[0] , '\n',  w[1]
>
> 献丑了呀。
>
> 程序不能自动检测输入的字符的编码,而且没有用到正则表达式。
> 不过,还能用。
>
>
> On Sat, 2006-12-09 at 20:56 +0800, 风向标 wrote:
> > 最近用django的做的小东西需要有那么一个天气抓取的功能。
> >
> > 目标页面如:http://weather.tq121.com.cn/mapanel/index1_new.php?city=%
> > B1%B1%BE%A9
> >
> > 需要抓取:
> >                                晴转多云
> >                                 5℃~-5℃
> >
> >
> > 这两行文字
> >
> > 由于一直拖着正则没有深入,urllib模块也碍于中文文档几近空白而没办法了解
> > 不得以在这里请教一下
> >
> >
> > 我自己尝试了一些笨拙的办法,结果连半个字符都没反馈回来
> > 劳请有经验的朋友给个思路或略加指点。谢谢!
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese



-- 
Best Regards,
Huang You Gong
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061210/711e687e/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 16:21

风向标 vaneoooo在gmail.com
星期日 十二月 10 16:21:26 HKT 2006

¸Ðлlimodou ÐÖ¸ø³öµÄÕýÔò
¿´À´Ê¹ÓÃÖ®ºóÎÒ»¹µÃ»ØÍ·ÈÏÕæ¶Á¶®²ÅËãÓÐÊÕ»ñ


Chris Song ÐÖ¸øµÄ˼·ÎÒÒ²Ïë¹ý
¿ÉÊǾÍÊÇд²»³öÓÐЧµÄ´úÂë½â¾ö

ллÇå·çÐÖ¸øµÄ¹¤¾ß¡£Ê¹ÓÃÖУ¬ºÜ²»´í£¡

ÈÈÐĵÄWangXinxiÐÖ¡£ÔÚʹÓÃÄãµÄ´úÂëʱ£¬×Ü»áÌáʾ£ºUnicodeDecodeError: 'utf8' codec can't decode
bytes in position 0-1: invalid dat
a

ÎÒ¶Ô±àÂë·½ÃæµÄÎÊÌâÒ²Ò»Çϲ»Í¨£¬ËÑË÷ÁËһЩÏà¹ØµÄ¶«Î÷¿´£¬»¹ÊÇÔ½·¢ºýÍ¿
ÎÒû¸ã¶®ÄÚÖõÄascii±àÂëºÍutf8ÒÔ¼°gb2312Ö®¼äµÄ¹Øϵ£¬´ËÍâҲû¶®decodeºÍencode·Ö±ðÊÇʲô×÷Óá£

Ïà¹Ø×ÊÁÏÉϹØÓÚÕâÁ½¸öº¯ÊýÒ²¾ÍÊÇÒ»±Ê´ø¹ý

huang you gongÐÖ¸øµÄ´úÂëËæºó¾Í²âÊÔÏ£¬Ð»Ð»£¡

ÔÚ06-12-10£¬Huang You Gong <hygool在gmail.com> дµÀ£º
>
> ÔÚWangxixiµÄ»ù´¡ÉÏ£¬¿ªÍ·Ìí¼Ó£º
> import re
>
> ÖмäÓÃÕýÔò±í´ïÖðÐвéÕÒ£º
> lines = s.readlines()
> for line in lines:
>        res = re.search( "(.*)", line )
>        if res != None:
>               print res.group( 1 )
>        res = re.search( "(.*)", line )
>        if res != None:
>               print res.group( 1 )
>
>
> On 12/9/06, WangXinxi < wangxinxi在cs.hit.edu.cn> wrote:
> > #!/usr/bin/python
> > import urllib
> > def get_weather(city):
> >        city = city.decode("utf8")
> >        city = city.encode("gb2312");
> >
> >        url = "http://weather.tq121.com.cn/mapanel/index1_new.php?city=%>
> > s" % city
> >        s = urllib.urlopen(url)
> >        str = s.read().decode('gb2312');
> >
> >        tmp = str.find('class="weather">')
> >        start = str.find('>', tmp) + 1
> >        end = str.find('', tmp)
> >
> >        res = [str[start:end]]
> >
> >        tmp = str.find('class="weatheren">')
> >        start = str.find('>', tmp) + 1
> >        end = str.find ('', tmp)
> >
> >        res.append(str[start:end])
> >
> >        return res
> >
> >
> > if __name__ == "__main__" :
> >        print "City: ",
> >        city = raw_input()
> >        w = get_weather(city);
> >        print w[0] , '\n',  w[1]
> >
> > Ï׳óÁËѽ¡£
> >
> > ³ÌÐò²»ÄÜ×Ô¶¯¼ì²âÊäÈëµÄ×Ö·ûµÄ±àÂ룬¶øÇÒûÓÐÓõ½ÕýÔò±í´ïʽ¡£
> > ²»¹ý£¬»¹ÄÜÓá£
> >
> >
> > On Sat, 2006-12-09 at 20:56 +0800, ·çÏò±ê wrote:
> > > ×î½üÓÃdjangoµÄ×öµÄС¶«Î÷ÐèÒªÓÐÄÇôһ¸öÌìÆøץȡµÄ¹¦ÄÜ¡£
> > >
> > > Ä¿±êÒ³ÃæÈ磺http://weather.tq121.com.cn/mapanel/index1_new.php?city=%>
> > > B1%B1%BE%A9
> > >
> > > ÐèҪץȡ£º
> > >                                Ççת¶àÔÆ
> > >                                 5¡æ~-5¡æ
> > >
> > >
> > > ÕâÁ½ÐÐÎÄ×Ö
> > >
> > > ÓÉÓÚÒ»Ö±ÍÏ×ÅÕýÔòûÓÐÉîÈ룬urllibÄ£¿éÒ²°­ÓÚÖÐÎÄÎĵµ¼¸½ü¿Õ°×¶øû°ì·¨Á˽â
> > > ²»µÃÒÔÔÚÕâÀïÇë½ÌÒ»ÏÂ
> > >
> > >
> > > ÎÒ×Ô¼º³¢ÊÔÁËһЩ±¿×¾µÄ°ì·¨£¬½á¹ûÁ¬°ë¸ö×Ö·û¶¼Ã»·´À¡»ØÀ´
> > > ÀÍÇëÓо­ÑéµÄÅóÓѸø¸ö˼·»òÂÔ¼ÓÖ¸µã¡£Ð»Ð»£¡
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese在lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > > Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
> --
> Best Regards,
> Huang You Gong
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061210/71b575a2/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 17:15

WangXinxi wangxinxi在cs.hit.edu.cn
星期日 十二月 10 17:15:12 HKT 2006

def get_weather(city):
          city = city.decode("utf8")
          city = city.encode("gb2312");

错误来自于这两句。因为我的系统是Linux,默认输入是utf8的,所以,先要
decode把它变成unicode,然后再将其encode,变成gb2312的(因为那个网页的地址
是gb2312编码的)。在Windows下,默认应该输入的就是gb2312编码吧。所以,就
不需要decode,encode了。

我在我的代码后面留了一句:
“程序不能自动检测输入的字符的编码”

哪位高手能够指点一下?



On Sun, 2006-12-10 at 16:21 +0800, 风向标 wrote:
> 感谢limodou 兄给出的正则
> 看来使用之后我还得回头认真读懂才算有收获
> 
> 
> Chris Song 兄给的思路我也想过
> 可是就是写不出有效的代码解决
>  
> 谢谢清风兄给的工具。使用中,很不错!
>  
> 热心的WangXinxi兄。在使用你的代码时,总会提示:UnicodeDecodeError:
> 'utf8' codec can't decode bytes in position 0-1: invalid dat
> a
>  
> 我对编码方面的问题也一窍不通,搜索了一些相关的东西看,还是越发糊涂
> 我没搞懂内置的ascii编码和utf8以及gb2312之间的关系,此外也没懂decode和
> encode分别是什么作用。
>  
> 相关资料上关于这两个函数也就是一笔带过
>  
> huang you gong兄给的代码随后就测试下,谢谢!
>  
> 在06-12-10,Huang You Gong <hygool在gmail.com> 写道: 
>         在Wangxixi的基础上,开头添加:
>         import re
>         
>         中间用正则表达逐行查找:
>         lines = s.readlines()
>         for line in lines:
>                res = re.search( "(.*)",
>         line )
>                if res != None: 
>                       print res.group( 1 )
>                res = re.search( "(.*)",
>         line ) 
>                if res != None:
>                       print res.group( 1 ) 
>         
>         
>         
>         On 12/9/06, WangXinxi < wangxinxi在cs.hit.edu.cn> wrote:
>         > #!/usr/bin/python
>         > import urllib
>         > def get_weather(city):
>         >        city = city.decode("utf8")
>         >        city = city.encode("gb2312");
>         > 
>         >        url = "
>         http://weather.tq121.com.cn/mapanel/index1_new.php?city=%
>         > s" % city 
>         >        s = urllib.urlopen(url)
>         >        str = s.read().decode('gb2312');
>         > 
>         >        tmp = str.find('class="weather">')
>         >        start = str.find('>', tmp) + 1
>         >        end = str.find('', tmp)
>         > 
>         >        res = [str[start:end]]
>         > 
>         >        tmp = str.find('class="weatheren">')
>         >        start = str.find('>', tmp) + 1
>         >        end = str.find ('', tmp)
>         > 
>         >        res.append(str[start:end])
>         > 
>         >        return res
>         > 
>         > 
>         > if __name__ == "__main__" :
>         >        print "City: ",
>         >        city = raw_input() 
>         >        w = get_weather(city);
>         >        print w[0] , '\n',  w[1]
>         > 
>         > 献丑了呀。
>         > 
>         > 程序不能自动检测输入的字符的编码,而且没有用到正则表达式。
>         > 不过,还能用。
>         > 
>         > 
>         > On Sat, 2006-12-09 at 20:56 +0800, 风向标 wrote: 
>         > > 最近用django的做的小东西需要有那么一个天气抓取的功能。
>         > >
>         > > 目标页面如:
>         http://weather.tq121.com.cn/mapanel/index1_new.php?city=%
>         > > B1%B1%BE%A9 
>         > >
>         > > 需要抓取:
>         > >                                晴转多云
>         > >                                 5℃~-5℃
>         > >
>         > >
>         > > 这两行文字
>         > > 
>         > > 由于一直拖着正则没有深入,urllib模块也碍于中文文档几近空白
>         而没办法了解 
>         > > 不得以在这里请教一下
>         > >
>         > >
>         > > 我自己尝试了一些笨拙的办法,结果连半个字符都没反馈回来
>         > > 劳请有经验的朋友给个思路或略加指点。谢谢!
>         > > _______________________________________________ 
>         > > python-chinese
>         > > Post: send python-chinese在lists.python.cn
>         > > Subscribe: send subscribe to
>         python-chinese-request在lists.python.cn 
>         > > Unsubscribe: send unsubscribe
>         to  python-chinese-request在lists.python.cn
>         > > Detail Info:
>         http://python.cn/mailman/listinfo/python-chinese
>         > _______________________________________________
>         > python-chinese
>         > Post: send python-chinese在lists.python.cn 
>         > Subscribe: send subscribe to
>         python-chinese-request在lists.python.cn
>         > Unsubscribe: send unsubscribe
>         to  python-chinese-request在lists.python.cn
>         > Detail Info:
>         http://python.cn/mailman/listinfo/python-chinese
>         
>         
>         
>         
>         -- 
>         Best Regards,
>         Huang You Gong 
>         _______________________________________________
>         python-chinese
>         Post: send python-chinese在lists.python.cn
>         Subscribe: send subscribe to
>         python-chinese-request在lists.python.cn
>         Unsubscribe: send unsubscribe to
>          python-chinese-request在lists.python.cn
>         Detail Info: http://python.cn/mailman/listinfo/python-chinese
> 
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 17:20

limodou limodou在gmail.com
星期日 十二月 10 17:20:30 HKT 2006

On 12/10/06, WangXinxi <wangxinxi在cs.hit.edu.cn> wrote:
>
> def get_weather(city):
>           city = city.decode("utf8")
>           city = city.encode("gb2312");
>
> 错误来自于这两句。因为我的系统是Linux,默认输入是utf8的,所以,先要
> decode把它变成unicode,然后再将其encode,变成gb2312的(因为那个网页的地址
> 是gb2312编码的)。在Windows下,默认应该输入的就是gb2312编码吧。所以,就
> 不需要decode,encode了。
>
> 我在我的代码后面留了一句:
> "程序不能自动检测输入的字符的编码"
>
> 哪位高手能够指点一下?
>
要检测的是网页的编码,而不是本地的编码。


-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 18:02

WangXinxi wangxinxi在cs.hit.edu.cn
星期日 十二月 10 18:02:59 HKT 2006

但是decode本地的编码的时候,需要知道本地的编码呀。

On Sun, 2006-12-10 at 17:20 +0800, limodou wrote:
> On 12/10/06, WangXinxi <wangxinxi在cs.hit.edu.cn> wrote:
> >
> > def get_weather(city):
> >           city = city.decode("utf8")
> >           city = city.encode("gb2312");
> >
> > 错误来自于这两句。因为我的系统是Linux,默认输入是utf8的,所以,先要
> > decode把它变成unicode,然后再将其encode,变成gb2312的(因为那个网页的地址
> > 是gb2312编码的)。在Windows下,默认应该输入的就是gb2312编码吧。所以,就
> > 不需要decode,encode了。
> >
> > 我在我的代码后面留了一句:
> > "程序不能自动检测输入的字符的编码"
> >
> > 哪位高手能够指点一下?
> >
> 要检测的是网页的编码,而不是本地的编码。
> 
> 
> -- 
> I like python!
> UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
> My Blog: http://www.donews.net/limodou
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 18:11

Xupeng Yun recordus在gmail.com
星期日 十二月 10 18:11:09 HKT 2006

2006/12/10, WangXinxi <wangxinxi at cs.hit.edu.cn>:
>
>
> 我在我的代码后面留了一句:
> "程序不能自动检测输入的字符的编码"
>

sys.stdin.encoding?
或者sys.getfilesystemencoding()?读出来后判断一下。

-- 
I like Python & Linux.
Blog: http://recordus.cublog.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061210/bcd6d4af/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 18:43

limodou limodou在gmail.com
星期日 十二月 10 18:43:46 HKT 2006

On 12/10/06, WangXinxi <wangxinxi在cs.hit.edu.cn> wrote:
> 但是decode本地的编码的时候,需要知道本地的编码呀。
>
为什么不考虑就使用utf-8呢?

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 19:22

风向标 vaneoooo在gmail.com
星期日 十二月 10 19:22:39 HKT 2006

WangXinxi ÐÖ£¬ÎÒÀí½âÁËΪʲôҪÕâÑù×ö

¿ÉÊǶԱàÂ뻹ÓÐÒÉ»ó£¬encodeºÍdecodeÓÐʲôÇø±ðÄØ£¿Èç¹ûÖ»ÊDZàÂëת»»
Ϊʲô²»ÊÇÓÉͳһµÄÒ»¸öת»»º¯ÊýÀ´×öÄØ£¿

α´úÂëÈ磺

     s.ת»»µ½(utf8)
     s.ת»»µ½(gb2312)

ÓÉÒ»¸öº¯Êý£¬Ö¸¶¨Ä¿±ê±àÂëÀàÐ;ÍÍê³É¡£
¶øΪʲôҪ²ð·ÖΪÁ½¸öº¯ÊýÄØ£¿ÕâÁ½¸öº¯Êý¹¦Ð§ÓÐËù²»Í¬£¿

´ËÍ⻹ÓÐÒ»µãÒªÀÍ·³wangxinxiÐÖ½â´ð£¬ÍòÒ»ÎÒÔݲ»ÖªÏþδÀ´Õâ¸ö¶«Î÷ÔË×÷ÓÚwin»¹ÊÇlinux£¬ÄÇÔõô°ìÄØ£¿  ÅжϲÙ×÷ϵͳ£¿

limodouÐÖ¡£ÎÒÏÖÔÚʹÓõÄÊÇ3.4¡£ÊÇ·ñÊÇ3.4°æ»¹Ã»ÓÐÕâ¸ö¹¦ÄÜÄØ£¿
ÎÒÕÒÁËÒ»»áûÓз¢ÏÖÔÚÄÄ´ò¿ªregex´°¿Ú


2006/12/10, limodou <limodou在gmail.com>:
>
> On 12/10/06, WangXinxi <wangxinxi在cs.hit.edu.cn> wrote:
> > µ«ÊÇdecode±¾µØµÄ±àÂëµÄʱºò£¬ÐèÒªÖªµÀ±¾µØµÄ±àÂëѽ¡£
> >
> Ϊʲô²»¿¼ÂǾÍʹÓÃutf-8ÄØ£¿
>
> --
> I like python!
> UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
> My Blog: http://www.donews.net/limodou
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061210/933c3973/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年12月10日 星期日 20:33

WangXinxi wangxinxi在cs.hit.edu.cn
星期日 十二月 10 20:33:11 HKT 2006

我是这么理解的,如果encode或者decode的语义只单有:"转换到"的话会出问题。
因为一个string本身是不知道是什么编码的。而要string“转换到”某种编码就必须
要知道其本身的编码方式。这个编码方式只有我们自己知道,string本身是不知道
的。

所以,
s.转换到(utf8)
或者是
s.转换到(utf8)不可以的。

现在有了decode和encode两个函数。对于s.encode("....")来说,s必然是一个
unicode的。而对于s.decode("...")来说,s的编码就是括号里的参数,这个函数
将s转换成unicode。


On Sun, 2006-12-10 at 19:22 +0800, 风向标 wrote:
> WangXinxi 兄,我理解了为什么要这样做
>  
> 可是对编码还有疑惑,encode和decode有什么区别呢?如果只是编码转换
> 为什么不是由统一的一个转换函数来做呢?
>  
> 伪代码如:
>  
>      s.转换到(utf8)
>      s.转换到(gb2312)
>  
> 由一个函数,指定目标编码类型就完成。
> 而为什么要拆分为两个函数呢?这两个函数功效有所不同?
>  
> 此外还有一点要劳烦wangxinxi兄解答,万一我暂不知晓未来这个东西运作于win
> 还是linux,那怎么办呢?  判断操作系统?
>  
> limodou兄。我现在使用的是3.4。是否是3.4版还没有这个功能呢?
> 我找了一会没有发现在哪打开regex窗口
> 
>  
> 2006/12/10, limodou <limodou在gmail.com>: 
>         On 12/10/06, WangXinxi <wangxinxi在cs.hit.edu.cn> wrote: 
>         > 但是decode本地的编码的时候,需要知道本地的编码呀。
>         >
>         为什么不考虑就使用utf-8呢?
>         
>         --
>         I like python!
>         UliPad <>:
>         http://wiki.woodpecker.org.cn/moin/UliPad
>         My Blog: http://www.donews.net/limodou
>         _______________________________________________
>         python-chinese
>         Post: send python-chinese在lists.python.cn
>         Subscribe: send subscribe to
>         python-chinese-request在lists.python.cn
>         Unsubscribe: send unsubscribe
>         to  python-chinese-request在lists.python.cn
>         Detail Info: http://python.cn/mailman/listinfo/python-chinese
> 
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号