我正在尝试使用请求库提交 POST 来上传文件。
\n\n这工作正常:
\n\ntheFile = { \'LUuploadFile\': ("linea.ipa", open(path_to_file, \'rb\'), \'application/octet-stream\') }\nrequest = requests.post(url, files=theFile)\nRun Code Online (Sandbox Code Playgroud)\n\n这会引发错误:
\n\ntheFile = { \'LUuploadFile\': ("li\xcc\x81nea.ipa", open(path_to_file, \'rb\'), \'application/octet-stream\') }\nrequest = requests.post(url, files=theFile)\nRun Code Online (Sandbox Code Playgroud)\n\n这个错误很奇怪:
\n\n( <class \'requests.exceptions.ConnectionError\'>,\n ConnectionError(MaxRetryError("HTTPSConnectionPool(host=\'fupload.apperian.com\', port=443): \n Max retries exceeded with url: /upload?transactionID=... \n (Caused by <class \'socket.error\'>: [Errno 32] Broken pipe)",),),\n <traceback object at 0x100a8e3f8>)\nRun Code Online (Sandbox Code Playgroud)\n\n它不是服务器,如果我使用它,它接受文件名curl:
curl --form "LUuploadFile=@li\xcc\x81nea.ipa" http://...\nRun Code Online (Sandbox Code Playgroud)\n 我使用 Pytesseract 对屏幕截图运行大量 OCR。这在大多数情况下运行良好,但少数情况会导致此错误:
pytesseract.image_to_string(image,None, False, "-psm 6")
Pytesseract: UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 2: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
我正在使用Python 3.4。任何如何防止此错误发生的建议(不仅仅是尝试/例外)都会非常有帮助。
当我在 Python 中使用三引号多行字符串时,我倾向于使用 textwrap.dedent 来保持代码可读性,并具有良好的缩进:
some_string = textwrap.dedent("""
First line
Second line
...
""").strip()
Run Code Online (Sandbox Code Playgroud)
但是,在 Python 3.x 中, textwrap.dedent 似乎不适用于字节字符串。我在为返回长多行字节字符串的方法编写单元测试时遇到了这个问题,例如:
# The function to be tested
def some_function():
return b'Lorem ipsum dolor sit amet\n consectetuer adipiscing elit'
# Unit test
import unittest
import textwrap
class SomeTest(unittest.TestCase):
def test_some_function(self):
self.assertEqual(some_function(), textwrap.dedent(b"""
Lorem ipsum dolor sit amet
consectetuer adipiscing elit
""").strip())
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
在 Python 2.7.10 中,上述代码工作正常,但在 Python 3.4.3 中失败:
some_string = textwrap.dedent("""
First line
Second line
...
""").strip() …Run Code Online (Sandbox Code Playgroud) 我需要比较两个字符串。aa从 PDF 文件中提取(使用 pdfminer/chardet)并且bb是键盘输入。如何标准化第一个字符串以进行比较?
>>> aa = "?"
>>> bb = "?"
>>> aa == bb
False
>>>
>>> aa.encode('utf-8')
b'\xc4\x81'
>>> bb.encode('utf-8')
b'a\xcc\x84'
Run Code Online (Sandbox Code Playgroud) 我正在尝试收集波斯语推文并进行文本分析。我用 tweepy 来做到这一点。但结果是unicode格式。如何将 unicode 文本转换为真正的波斯语文本?
\n\n import tweepy\n import csv\n import pandas as pd\n ####input your credentials here\n consumer_key = xxxx\n consumer_secret = xxxx\n access_token = xxxx\n access_token_secret = xxxx\n\n auth = tweepy.OAuthHandler(consumer_key, consumer_secret)\n auth.set_access_token(access_token, access_token_secret)\n api = tweepy.API(auth,wait_on_rate_limit=True)\n #####United Airlines\n # Open/Create a file to append data\n csvFile = open(\'got5.txt\', \'a\')\n #Use csv Writer\n csvWriter = csv.writer(csvFile)\n\n for tweet in tweepy.Cursor(api.search,q="\xda\xaf\xd8\xa7\xd8\xaa", count=5,\n lang="fa",\n since="2017-04-03").items():\ncsvWriter.writerow([tweet.created_at, tweet.text.encode(\'utf-8\')])\nprint([tweet.created_at, tweet.text.encode(\'utf-8\')])\nRun Code Online (Sandbox Code Playgroud)\n\n结果:
\n\n 2019-07-11 17:09:17,b\'@StingTIcon \\xd8\\xa8\\xd8\\xa7\\xd8\\xb2 \\xd8\\xa7\\xdb\\x8c\\xd9\\x86 \\xd8\\xae\\xd9\\x88\\xd8\\xa8\\xd9\\x87 =)))))) \\xd8\\xa7\\xd9\\x88\\xd9\\x86\\xd8\\xa7\\xdb\\x8c\\xdb\\x8c \\xda\\xa9\\xd9\\x87 \\xd9\\x85\\xdb\\x8c\\xda\\xaf\\xd9\\x85 \\xd8\\xaa\\xd8\\xa7\\xd8\\xa8\\xd9\\x84\\xd9\\x88\\xd8\\xaa\\xd8\\xb1\\xdb\\x8c\\xd9\\x86 …Run Code Online (Sandbox Code Playgroud) 我在 Django 查看以下字符串
string = "'DE', 'FR', 'IT'"
Run Code Online (Sandbox Code Playgroud)
它被转移到一个模板:
return render(request, 'template.html', {'string':string})
Run Code Online (Sandbox Code Playgroud)
在模板中我得到这个字符串如下:
'DE','FR','IT'
Run Code Online (Sandbox Code Playgroud)
问题是这个 ' 符号的翻译很奇怪;我该如何将此字符串传输到模板?谢谢
如何在verbose_name或help_text中使用带重音符号的字母或ñ等特殊字符?
我知道有很多关于这个问题的线索,但我没有找到解决我的问题的线程.
我正在尝试打印一个字符串但是在打印时它没有显示特殊字符(例如æ,ø,å,ö和ü).当我使用repr()这个打印字符串时,我得到的是:
u'Von D\xc3\xbc' 和 u'\xc3\x96berg'
有谁知道我怎么能把它转换成Von Dü和 Öberg?对我来说重要的是这些字符不会被忽略,例如myStr.encode("ascii", "ignore").
编辑
这是我使用的代码.我用BeautifulSoup来抓一个网站.<td>table(<table>)中cell()的内容被放入变量中name.这是包含我无法打印的特殊字符的变量.
web = urllib2.urlopen(url);
soup = BeautifulSoup(web)
tables = soup.find_all("table")
scene_tables = [2, 3, 6, 7, 10]
scene_index = 0
# Iterate over the <table>s we want to work with
for scene_table in scene_tables:
i = 0
# Iterate over < td> to find time and name
for td in tables[scene_table].find_all("td"):
if i % 2 == …Run Code Online (Sandbox Code Playgroud) 我想检查字符串是否已经是NFC格式.目前我这样做:
unicodedata.normalize('NFC', s) == s
Run Code Online (Sandbox Code Playgroud)
我这样做是为了大量的字符串,所以我想要高效.上述方法似乎很浪费.它转换为NFC,然后进行字符串比较.
有更有效的方法吗?我考虑过:
len(unicodedata.normalize('NFC', s)) == len(s)
Run Code Online (Sandbox Code Playgroud)
这避免了字符串比较.但我不确定这是否总是正确的.如果NFC标准化始终改变非NFC字符串的长度,则此方法有效.这是一个有效的假设吗?
还有其他想法吗?
python unicode normalization unicode-normalization python-unicode
我在一个文件中给了一串希伯来字符(以及其他一些阿拉伯字符.我都不知道它们)
צוֹר
当我从Python3中的文件加载此字符串时
fin = open("filename")
x = next(fin).strip()
Run Code Online (Sandbox Code Playgroud)
长度x似乎是5
>>> len(x)
5
Run Code Online (Sandbox Code Playgroud)
它的unicode utf-8编码是
>>> x.encode("utf-8")
b'\xd7\xa6\xd7\x95\xd6\xb9\xd7\xa8\xe2\x80\x8e'
Run Code Online (Sandbox Code Playgroud)
但是,在浏览器中,很明显这些希伯来字符的长度为3.
如何正确地获得长度?为什么会发生这种情况?
我知道Python 3默认是unicode所以我没想到会出现这样的问题.
python-unicode ×10
python ×6
python-3.x ×4
django ×2
encoding ×1
indentation ×1
literals ×1
tesseract ×1
tweepy ×1
unicode ×1
utf-8 ×1