我有一个相当大的python2.6应用程序,到处都是打印语句。我自始至终都在使用unicode字符串,它通常工作得很好。但是,如果我重定向应用程序的输出(如"myapp.py >output.txt"),则偶尔会遇到这样的错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 0: ordinal not in range(128)
我想,如果有人将他们的地区设置为ASCII,也会出现同样的问题。现在,我完全理解这个错误的原因。
和给定的字符一样,python使用的其他字符是什么。
\ is an escape character in Python
\t gets interpreted as a tab
当我打开文件test_file=open('c:\Python27\test.txt','r')时。它给出了错误作为IOError: [Errno 22] invalid mode ('r') or filename: 'C:\Python27\test.txt'。当我进行谷歌搜索时,我了解到\t在python中被解释为选项卡。像wise
下面的消息在用python解析时会给出下面的错误。消息来自json文件消息:
"Daca nu il stiti déjà, cu siguranta o sa va smulga un zambet. O portie de motivatie pentru toata lumea. :)",
错误:
Traceback (most recent call last):
File "C:\Users\X\Desktop\store_post.py", line 328, in <module>
post_l_1 =jsonToPost
我有一个被抓取的原始文件列表,它由文本和源代码组成。下面是列出的文件类型,我想删除所有类型的文件,C源,python脚本,HTML和空文件,只保留ASCII和unicode文件。
file *
1dW6WJMN.txt: Python script, ASCII text executable
9dJbZ3Vv.txt: ASCII text, with CRLF line terminators
9dQsmVU4.txt: Python script, UTF-8 Unicode text executable, with CRLF line terminators
A5hENB7D.
我使用python模块requests从一些API中获取数据,它们都返回json数据,这些数据被转换为dict。我想做的是从这些字典中提取一些信息,或者将它们全部转换为python字符串,以便我可以对它们使用stemming和string.translate()模块,或者将整个内容转换为这些模块可以识别的数据。我不能用UTF-8数据做这件事,它让我头疼。有没有解决这个问题的办法?我可以遍历字典并将其转换为ASCII吗?
奇怪的是,我将ASCII字符串与其他函数(if ASCII-word is in UTF dict: do something)中的UTF数据进行了比较,它工作得很好。ASCI
我已经看过所有其他的帖子,也做了相当多的研究,但我仍然在挠头。
以下是问题所在:
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=u'My Mate\u2019s'
>>> b='\xe2\x80\x99s BBQ
我试图通过假设名字出现在Firstname Lastlame表格上来捕捉它们的名字。这与下面的代码很好,但我希望能够捕获像Pär Åberg这样的国际名称。我找到了一些解决方案,但不幸的是,它们似乎并不适用于Python口味的regexp。有内奸的人吗?
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
text = """
This is a text containing names of people in the text such as
Hillary Clinton or Barack Obama.
帮我找出我的python代码出了什么问题。
这就是密码
import nltk
import re
import pickle
raw = open('tom_sawyer_shrt.txt').read()
### this is how the basic Punkt sentence tokenizer works
#sent_tokenizer=nltk.data.load('tokenizers/punkt/english.pickle')
#sents = sent_tokenizer.tokenize(raw)
### train &
我变得非常熟悉:
UnicodeEncodeError:'ascii‘编解码器无法对位置24中的字符u'\xe8’进行编码:序数不在范围内(128)
我已经查看了SO上的多个帖子,他们推荐- variable.encode('ascii','ignore')
然而,这是不起作用的。即使在这之后,我也得到了同样的错误...
堆栈跟踪:
'ascii' codec can't encode character u'\x92' in position 18: ordinal not in range(128)
T
Ia有以下数据容器,该容器正在不断更新:
data = []
for val, track_id in zip(values,list(track_ids)):
#below
if val < threshold:
#structure data as dictionary
pre_data = {"artist": sp.track(track_id)['artists'][0]['name'], "
我在Linux中使用python2.7。来自。我发现python在str中每个字母表使用一个字节,而在Unicode字符串中使用4个字节。那么为什么我在输入'1' == u'1'之后会得到True。
在python2中也有类似的事实:
In [1]: a = {}
In [2]: a['1'] = 1
In [3]: a[u'1']
Out[3]: 1
我有一个SQLite3分号。我使用SQLite浏览器和Python来处理这个db。我有一个列description,它是tabe上的文本列。我使用Sqlite3 Browser在一行中更改了文本。从那时起,我就会看到python脚本中的错误。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 36: ordinal not in range(128)
我试图捕捉这个异常并打印行,我意识到,除了文本之外,还有对象缓冲区(这只是一个单元格),行中的其他单元格是可以的:
<read-
我尝试通过python telnet发送ls /命令。 import telnetlib
tel = telnetlib.Telnet('10.10.0.1'.'1234')
tel.write('ls / ') 但是我得到了一个错误: if IAC in buffer:
TypeError: 'in <string>' requires string as left operand, not bytes
Python的说:
要搜索的模式和字符串都可以是Unicode字符串(str)和8位字符串(字节)。
但是我想知道用str和bytes进行搜索是否总是会得到相同的结果。我的意思是,对于所有有效的pattern和string,这个函数是否返回true
#!/usr/bin/env python3
import re
def test(pattern, string):
m = re.search(pattern, string)
mb = re.search(pattern.encode(), string.encode())
if m is None and