Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Regex &引用;UnicodeEncodeError:&x27;ascii';编解码器可以';“t编码字符”;_Regex_Unicode_Python 2.6_Non Ascii Characters - Fatal编程技术网

Regex &引用;UnicodeEncodeError:&x27;ascii';编解码器可以';“t编码字符”;

Regex &引用;UnicodeEncodeError:&x27;ascii';编解码器可以';“t编码字符”;,regex,unicode,python-2.6,non-ascii-characters,Regex,Unicode,Python 2.6,Non Ascii Characters,我试图通过正则表达式传递大字符串的随机html,我的Python 2.6脚本遇到了以下问题: UnicodeEncodeError:“ascii”编解码器无法对字符进行编码 我追溯到这个词末尾的商标上标:保护™ -- 我希望将来能遇到像这样的人 是否有处理非ascii字符的模块?或者,在python中处理/转义非ascii内容的最佳方法是什么 谢谢! 完全错误: E =================================================================

我试图通过正则表达式传递大字符串的随机html,我的Python 2.6脚本遇到了以下问题:

UnicodeEncodeError:“ascii”编解码器无法对字符进行编码

我追溯到这个词末尾的商标上标:保护™ -- 我希望将来能遇到像这样的人

是否有处理非ascii字符的模块?或者,在python中处理/转义非ascii内容的最佳方法是什么

谢谢! 完全错误:

E
======================================================================
ERROR: test_untitled (__main__.Untitled)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Python26\Test2.py", line 26, in test_untitled
    ofile.write(Whois + '\n')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 1005: ordinal not in range(128)
完整脚本:

from selenium import selenium
import unittest, time, re, csv, logging

class Untitled(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*firefox", "http://www.BaseDomain.com/")
        self.selenium.start()
        self.selenium.set_timeout("90000")

    def test_untitled(self):
        sel = self.selenium
        spamReader = csv.reader(open('SubDomainList.csv', 'rb'))
        for row in spamReader:
            sel.open(row[0])
            time.sleep(10)
            Test = sel.get_text("//html/body/div/table/tbody/tr/td/form/div/table/tbody/tr[7]/td")
            Test = Test.replace(",","")
            Test = Test.replace("\n", "")
            ofile = open('TestOut.csv', 'ab')
            ofile.write(Test + '\n')
            ofile.close()

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
“最好”的方式总是取决于你的要求;那么,你的呢?忽略非ASCII是否合适?你应该更换吗™ 有“(tm)”吗?(在本例中,这看起来很奇怪,但其他代码点很快就会崩溃,但它可能正是您想要的。)异常是否正是您所需要的;现在你只需要用某种方式来处理它


只有您才能真正回答这个问题。

您试图在“严格”模式下将unicode转换为ascii:

您可能需要以下内容之一:

s = u'Protection™'

print s.encode('ascii', 'ignore')    # removes the ™
print s.encode('ascii', 'replace')   # replaces with ?
print s.encode('ascii','xmlcharrefreplace') # turn into xml entities
print s.encode('ascii', 'strict')    # throw UnicodeEncodeErrors

您试图将bytestring传递给某个对象,但是(由于您提供的信息不足)无法告诉您试图传递给的对象。您首先使用一个无法编码为ASCII(默认编解码器)的Unicode字符串,因此,您必须使用不同的编解码器进行编码(或者按照@R.Pate的建议对其进行音译)——但无法使用它来说明您应该使用哪种编解码器,因为我们不知道您正在通过bytestring的是什么,因此也不知道未知子系统将能够接受和正确处理哪些编解码器

在你留给我们的黑暗中,
utf-8
是一个合理的盲猜测(因为它是一个可以将任何Unicode字符串精确地表示为bytestring的编解码器,并且它是用于多种用途的标准编解码器,例如XML)——但它不能仅仅是一个盲猜测,除非您将告诉我们更多关于您试图通过测试环传递给的内容以及目的


传递
string.encode('utf-8')
而不是裸
string
肯定会避免您现在看到的特定错误,但它可能会导致特殊的显示(或您试图用bytestring做的任何事情),除非收件人准备好、愿意并且能够接受utf-8编码(我们怎么知道呢,完全不知道收件人可能是什么?-)

首先,尝试安装英语翻译(或其他任何需要的翻译):

它为所有受支持的包(包括Python)提供翻译数据更新

并确保在代码中使用正确的编码

例如:

open(foo, encoding='utf-8')

然后仔细检查系统配置,如
LANG
的值或区域设置的配置(
/etc/default/locale
)不要忘记重新登录您的会话。

请发布python版本,以及作为异常一部分的回溯。您使用的是哪一版本的python?python的Unicode支持在过去的几个版本中有了很大的发展。以下是版本:python 2.6谢谢!根据您的说明更新了信息,我将开始研究如何使用我们e utf-8现在--谢谢!现在我们知道在写入文件时会出现错误-移动到utf-8肯定会解决这个问题…但是文件何时重新读取以及如何处理?我们仍然完全不知道unicode->bytestring转换的真正目的!-)提供的完整脚本=也欢迎一般建议。谢谢感谢您的努力——我更新了我的问题,并将尝试使用您的信息-KBF1
sudo apt-get install language-pack-en
open(foo, encoding='utf-8')