我有一个套接字服务器,应该从客户端接收UTF-8有效字符.
问题是一些客户端(主要是黑客)正在通过它发送所有错误的数据.
我可以很容易地区分真正的客户端,但我正在记录所有发送的数据文件,以便我以后可以分析它.
有时我会得到这样的字符œ导致UnicodeDecodeError错误.
我需要能够使用或不使用这些字符来生成字符串UTF-8.
更新:
对于我的特殊情况,套接字服务是一个MTA,因此我只希望接收ASCII命令,如:
EHLO example.com
MAIL FROM: <john.doe@example.com>
...
Run Code Online (Sandbox Code Playgroud)
我用JSON记录了所有这些.
然后一些没有良好意图的人决定出售各种垃圾.
这就是为什么对于我的特定情况,剥离非ASCII字符是完全可以的.
我收到了一些编码的文本,但我不知道使用了什么字符集.有没有办法使用Python确定文本文件的编码?如何检测文本文件的编码/代码页处理C#.
我真的很困惑codecs.open function.当我做:
file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()
Run Code Online (Sandbox Code Playgroud)
它给了我错误
UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xef:序号不在范围内(128)
如果我做:
file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()
Run Code Online (Sandbox Code Playgroud)
它工作正常.
问题是为什么第一种方法失败了?我该如何插入bom?
如果第二种方法是正确的做法,那么使用点是codecs.open(filename, "w", "utf-8")什么?
我想以递归方式搜索包含文本文件子目录的目录,并用多行字符串的内容替换文件中每次出现的{$ replace}.如何用python实现这一目标?
[编辑]
到目前为止,我所拥有的是使用os.walk获取需要更改的文件列表的递归代码.
import os
import sys
fileList = []
rootdir = "C:\\test"
for root, subFolders, files in os.walk(rootdir):
if subFolders != ".svn":
for file in files:
fileParts = file.split('.')
if len(fileParts) > 1:
if fileParts[1] == "php":
fileList.append(os.path.join(root,file))
print fileList
Run Code Online (Sandbox Code Playgroud) 在此处输入图像描述正在收集 sklearn\n使用缓存的 sklearn-0.0.post4.tar.gz (3.6 kB)\n准备元数据 (setup.py) ... 错误\n错误:子进程退出并出现错误
\n\xc3\x97 python setup.py Egg_info 未成功运行。\n\xe2\x94\x82 退出代码: 1\n\xe2\x95\xb0\xe2\x94\x80> [8 行输出]\nTraceback (最近一次调用最后):\n文件“<string>”,第 2 行,<模块>\n文件“<pip-setuptools-caller>”,第 34 行,<模块>\n文件“C:\\Users\\ kusha\\AppData\\Local\\Temp\\pip-install-mtbck747\\sklearn_33137b31d9da4e98b4212dacff7ddab4\\setup.py",第 10 行,位于 <module>\nLONG_DESCRIPTION = f.read()\nFile "C:\\Program Files\\Python310\\lib\\encodings\\cp1252.py”,第 23 行,在解码中\n返回 codecs.charmap_decode(input,self.errors,decoding_table)[0]\nUnicodeDecodeError: \'charmap\' 编解码器可以\不解码位置 7 中的字节 0x8f:字符映射到 <undefined>\n[输出结束]
\n注意:此错误源自子进程,并且可能不是 pip 的问题。\n错误:元数据生成失败
\n\xc3\x97 生成包元数据时遇到错误。\n\xe2\x95\xb0\xe2\x94\x80> 请参阅上面的输出。
\n注意:这是上面提到的包的问题,而不是 pip。\n提示:有关详细信息,请参阅上文。
\n[通知] pip 的新版本可用:22.3.1 -> 23.0.1\n[通知] 要更新,请运行: python.exe -m pip install --upgrade pip
\n尝试安装 SKlearn 并在安装时出现此错误。谁能帮我这个
\n我正在读一个基本的csv文件,其中列用逗号分隔,并带有以下列名:
userid, username, body
但是,body列是一个可能包含逗号的字符串.显然这会导致问题,并且大熊猫会抛出错误:
CParserError: Error tokenizing data. C error: Expected 3 fields in line 3, saw 8
有没有办法告诉大熊猫忽略特定列中的逗号或解决此问题的方法?
我仅在 PyCharm 中处于调试模式时看到以下错误(按“bug”按钮)。它没有到达断点,但在加载flask.exe 文件时失败。
C:\ProgramData\Anaconda3\envs\workflow_webapp\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.2\helpers\pydev\pydevd.py" --multiproc --qt-support=auto --client 127.0.0.1 --port 55286 --file C:/ProgramData/Anaconda3/envs/workflow_webapp/Scripts/flask.exe run
pydev debugger: process 18788 is connecting
Connected to pydev debugger (build 183.5429.31)
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\envs\workflow_webapp\lib\tokenize.py", line 390, in find_cookie
line_string = line.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 2: invalid start byte
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.3.2\helpers\pydev\pydevd.py", line 1741, …Run Code Online (Sandbox Code Playgroud) 我已经阅读了UnicodeDecodeError: 'charmap' codec can't decode byte X in position Y: character maps to <undefined>。虽然错误信息相似,但代码完全不同,因为我os.popen在这个问题中使用了open. 我不能使用其他问题的答案来解决这个问题。
output = os.popen("dir").read()
Run Code Online (Sandbox Code Playgroud)
该行应该将命令“dir”的输出分配给变量“output”,导致此错误:
'charmap' codec can't decode byte 0x88 in position 260: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
我认为这可能是因为文件夹中的某些文件包含诸如?, ?, ? 和?以他们的名义。我不知道如何解决这个问题。
我正在python中编写一个简短的脚本,它将扫描图像文件的文件夹列表,然后重新组织它们.
组织它们的一种可选方式是我们希望它们创建日期.
目前,我正在尝试按如下方式阅读图像创建日期
import os.path, time
f = open("hi.jpg")
data = f.read()
f.close()
print "last modified: %s" % time.ctime(os.path.getmtime(f))
print "created: %s" % time.ctime(os.path.getctime(f))
Run Code Online (Sandbox Code Playgroud)
但是我得到一个错误
Traceback (most recent call last):
File "TestEXIFread.py", line 6, in <module>
print "last modified: %s" % time.ctime(os.path.getmtime(f))
File "/usr/lib/python2.7/genericpath.py", line 54, in getmtime
return os.stat(filename).st_mtime
TypeError: coercing to Unicode: need string or buffer, file found
Run Code Online (Sandbox Code Playgroud)
谁能告诉我它意味着什么?
我在将嵌套的JSON转换为CSV时遇到问题。为此,我使用https://github.com/vinay20045/json-to-csv(有点支持python 3.4),这是完整的json-to-csv.py文件。如果我设置,转换工作正常
#Base Condition
else:
reduced_item[str(key)] = (str(value)).encode('utf8','ignore')
Run Code Online (Sandbox Code Playgroud)
和
fp = open(json_file_path, 'r', encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)
但是当我将csv导入MS Excel时,我看到了西里尔字母错误的字符,例如\ xe0 \ xf1,英文文本就可以了。尝试设置encode('cp1251','ignore'),但随后出现错误UnicodeDecodeError:'charmap'编解码器无法解码位置Y的字节X:字符映射到(如此处UnicodeDecodeError:'charmap'编解码器无法解码位置Y的字节X:字符映射到<undefined>)
import sys
import json
import csv
##
# This function converts an item like
# {
# "item_1":"value_11",
# "item_2":"value_12",
# "item_3":"value_13",
# "item_4":["sub_value_14", "sub_value_15"],
# "item_5":{
# "sub_item_1":"sub_item_value_11",
# "sub_item_2":["sub_item_value_12", "sub_item_value_13"]
# }
# }
# To
# {
# "node_item_1":"value_11",
# "node_item_2":"value_12",
# "node_item_3":"value_13",
# "node_item_4_0":"sub_value_14",
# "node_item_4_1":"sub_value_15",
# "node_item_5_sub_item_1":"sub_item_value_11",
# "node_item_5_sub_item_2_0":"sub_item_value_12",
# "node_item_5_sub_item_2_0":"sub_item_value_13"
# …Run Code Online (Sandbox Code Playgroud)