khi thêm u"\"{0}\"".format
vào mã, nó gặp lỗi ở dạng các biến tiếp theo vì anh ấy không thể hiểu giá trị của EX. var x =
tôi nghĩ ra cách để bỏ qua dòng này nếu lỗi này xuất hiện dưới dạng một tính năng được thêm vào trong mã chứ không phải lỗi cơ bản này
------------------------------
Mohamed El Bagory
------------------------------
Tin nhắn gốc
Gởi. Thứ tư ngày 19 tháng 8 năm 2020 12. 10 GIƠ TÔI
Từ. Jared Fagel
Môn học. UnicodeEncodeError 'ascii' 'thứ tự không nằm trong phạm vi [128]'
@Mohamed El Bagory
https. //www. ibm. com/support/pages/node/6193791?myns=swgother&mynp=OCSS5E58&mync=E&cm_sp=swgother-_-OCSS5E58-_-E
Nếu không, hãy xử lý nó trong mã chức năng bằng các mô-đun Python gốc
------------------------------
Jared Fagel
Nhà phân tích an ninh mạng tôi
Tiện ích công cộng
Tin nhắn gốc
Gởi. Thứ tư ngày 19 tháng 8 năm 2020 10. 11 giờ sáng
Từ. Mohamed El Bagory
Môn học. UnicodeEncodeError 'ascii' 'thứ tự không nằm trong phạm vi [128]'
là vấn đề vẫn còn tồn tại?
nếu không thì làm cách nào bạn có thể giải quyết nó vì tôi đang gặp phải vấn đề tương tự
Cảm ơn trước
------------------------------
Mohamed El Bagory
Tin nhắn gốc
Gởi. Thứ năm 16 Tháng Tư, 2020 07. 01 giờ sáng
Từ. Lucian Sipos
Môn học. UnicodeEncodeError 'ascii' 'thứ tự không nằm trong phạm vi [128]'
Bằng cách nào đó, ngày hôm qua tôi đã hoàn thành xuất hiện trong các sự cố Lưu ý biểu tượng bảng Anh ví dụ từ điển
my_dict = {u'related': {u'type': u'email_subject', u'value': u'Win a \xa3100 gift card by telling Sky what you think!'}}
Bằng cách chờ đợi câu trả lời, tôi nghĩ sẽ thử đoạn mã khác này.
def myprint[d]:
stack = d.items[]
while stack:
k, v = stack.pop[]
if isinstance[v, dict]:
stack.extend[v.iteritems[]]
else:
print["%s: %s" % [k, v]]
Điều này in chính xác "£" trong ghi chú [thay thế "print[]" bằng "sự cố. Thêm ghi chú[]"]
@Jared Mã Fagel mà bạn có thể thấy trong quá trình xử lý hậu kỳ ban đầu được tạo trong mã cục bộ của tôi [một tập lệnh python ngoại tuyến], khi tôi kiểm tra từ điển "bị lỗi" đã trả về kết quả tương tự [không có lỗi như Resilient nhưng với \xa3 hoặc \ . Ngoài ra, đối với nhu cầu nội bộ, có một phần mã cần được xử lý hậu kỳ
Về Khả năng phục hồi, có thể chỉ định mã hóa khác, từ ascii đến utf-8, của bộ xử lý nội bộ không?
CHỈNH SỬA. Tôi đã thử lại với đoạn mã trên trong toàn bộ từ điển của mình và vẫn không hoạt động, hãy tiếp tục xem \xa3 trong bản in
.
------------------------------
Lucian Sipos
Tin nhắn gốc
Gởi. Thứ tư 15 Tháng Tư, 2020 03. 17 giờ chiều
Từ. Jared Fagel
Môn học. UnicodeEncodeError 'ascii' 'thứ tự không nằm trong phạm vi [128]'
Thay vào đó, bạn có thể di chuyển mã này vào chính mã chức năng hoặc một chức năng sử dụng bên trong gói không?
Lý do của vấn đề mã hóa không trực tiếp là do Python 2 [mặc dù Python 2 không mặc định là ASCII, trong đó Python 3 mặc định là UTF-8]. Resilient sử dụng jython trên back-end cho các tập lệnh và chúng có thể đã chỉ định ASCII làm loại mã hóa
Tôi không biết chính xác jython được triển khai như thế nào, nhưng tôi tưởng tượng rằng nó có thể đã được thay đổi như chúng ta thấy ở đây
https. // stackoverflow. com/a/28348970
https. //www. jython. org/jython-old-sites/docs/library/codecs. html
------------------------------
Jared Fagel
Nhà phân tích an ninh mạng tôi
Tiện ích công cộng
Tin nhắn gốc
Gởi. Thứ ba 14/04/2020 05. 53 giờ sáng
Từ. Lucian Sipos
Môn học. UnicodeEncodeError 'ascii' 'thứ tự không nằm trong phạm vi [128]'
Cảm ơn vì câu trả lời
Sử dụng unicode[] không phải là một tùy chọn khả thi miễn là tôi có từ điển ở cấp mã. Nhưng dù sao thì tôi cũng đã thử, bằng cách sử dụng json lần đầu tiên. dumps[] và sau đó áp dụng unicode[str, "utf-8]. Đây là kết quả bây giờ
{"loại". "email_subject", "giá trị". "Giành được thẻ quà tặng \u00a3100 bằng cách cho Sky biết suy nghĩ của bạn. "}
Tôi muốn tránh quan tâm đến từng giá trị của chính tả của mình để có kết quả mong muốn vì bản thân từ điển rất lớn và có thể đó không phải là một giải pháp có lập trình
Những gì tôi đã làm sau khi đọc câu trả lời của bạn bằng ngôn ngữ là thế này
import jsonmy_dict = {u'related': {u'type': u'email_subject', u'value': u'Win a \xa3100 gift card by telling Sky what you think!'}}
# option 1
def safe_str[obj]:
try:
return str[obj]
except UnicodeEncodeError:
return obj.encode['ascii', 'ignore'].decode['ascii']print[safe_str[my_dict]]
# >>> {u'related': {u'type': u'email_subject', u'value': u'Win a \xa3100 gift card by telling Sky what you think!'}}# option 2
dumped = json.dumps[my_dict]
print[dumped]
# >>> {"related": {"type": "email_subject", "value": "Win a \u00a3100 gift card by telling Sky what you think!"}}loaded = json.loads[dumped]
print[loaded]
# >>> {u'related': {u'type': u'email_subject', u'value': u'Win a \xa3100 gift card by telling Sky what you think!'}}# option 3
print[dumped.encode['ascii', 'ignore'].decode['ascii']]
# >>> {"related": {"type": "email_subject", "value": "Win a \u00a3100 gift card by telling Sky what you think!"}}# option 4
print[unicode[dumped, "utf-8"]]
# >>> {"related": {"type": "email_subject", "value": "Win a \u00a3100 gift card by telling Sky what you think!"}}# option 5
for k, v in my_dict.items[]:
print[k, v]
for g, h in v.items[]:
print[safe_str[g], safe_str[h]]# >>> [u'related', {u'type': u'email_subject', u'value': u'Win a \xa3100 gift card by telling Sky what you think!'}]
# >>> ['type', 'email_subject']
# >>> ['value', u'Win a 100 gift card by telling Sky what you think!'] ---> here the pound symbol disappeared...
Tôi vẫn chưa thử bất cứ điều gì mới [ngoài những gì đã làm trước đó]. Tại thời điểm này, tôi không biết liệu có đúng không khi mong đợi biểu tượng bảng Anh trong mã ngoại tuyến/ở cấp chức năng
Cuối cùng, điều bắt buộc là phải có một từ điển trong đầu vào [vì vậy trong đầu ra từ hàm] trong quá trình hậu kỳ vì toàn bộ mã trong hậu kỳ dựa trên một lệnh [và nó đã hoạt động -. ] - với các ký tự bình thường]
Để trả lời @Ben Lurie, tôi đã cố gắng in phản hồi chức năng của mình cho ứng dụng. log nhưng nó vẫn báo lỗi [master_response là từ điển của tôi]
Traceback [most recent call last]:
File "/opt/rh/python27/root/usr/lib/python2.7/site-packages/cisco_threat_response/components/funct_cisco_threat_response.py", line 128, in _cisco_threat_response_function
log.info["CTR - MASTER RESPONSE: {}".format[u'' + str[master_response]]]
def myprint[d]:0
stack = d.items[]
while stack:
k, v = stack.pop[]
if isinstance[v, dict]:
stack.extend[v.iteritems[]]
else:
print["%s: %s" % [k, v]]
Trước khi kiểm tra tôi đã thực hiện ở trên, giá trị được ghi lại bình thường
Đây là một phần chính của mã tôi sử dụng trong tập lệnh hậu xử lý của mình
cisco_sightings = results["value"]["cisco_sightings"]sightings_list = []
for d in cisco_sightings["data"]:
try:
if d["module"] == "SMA Email":
for s in d["data"]["sightings"]["docs"]:
cisco_sightings_response = {"artifact_value": None, "observed_time": None, "confidence": None,
"resolution": None,
"relations": None,
"description": None, "type": None}cisco_sightings_response["artifact_value"] = artifact.value
cisco_sightings_response["observed_time"] = s["observed_time"]
cisco_sightings_response["confidence"] = s["confidence"]
cisco_sightings_response["resolution"] = s["resolution"]
cisco_sightings_response["relations"] = s["relations"]
cisco_sightings_response["description"] = s["description"]
cisco_sightings_response["type"] = s["type"]sightings_list.append[cisco_sightings_response]
except KeyError as key_error:
continueresult = ""
relations_dict = {"Origin": None, "Source type": None, "Source value": None, "Relation": None, "Related type": None,
"Related value": None}for i, s in enumerate[sightings_list]:
result += "Sighting {}".format[i + 1]
result += "\nArtifact value: {}".format[s["artifact_value"]]
result += "\nObserved time: {}".format[s["observed_time"]["start_time"]]
result += "\nConfidence: {}".format[s["confidence"]]
result += "\nResolution: {}".format[s["resolution"]]result += "\nDescription: {}".format[s["description"]]
result += "\nType: {}".format[s["type"]]relations_list = []
for r in s["relations"]:
relations_list.append[r]for e, rel in enumerate[relations_list]:
relations_dict["Origin"] = rel["origin"]
relations_dict["Source type"] = rel["source"]["type"]
relations_dict["Source value"] = rel["source"]["value"]
relations_dict["Relation"] = rel["relation"]
relations_dict["Related type"] = rel["related"]["type"]
relations_dict["Related value"] = rel["related"]["value"]result += "\n\nRelation {}:\n{}".format[e + 1, "\n".join[
[str["\t" + k + ": {}".format[v]] for k, v in relations_dict.items[]]]]result += "\n\n"
result += "#" * 50
result += "\n\n"
Tôi nghĩ phần mà mã bị hỏng là đây [từ quá trình gỡ lỗi của tôi, ở đây ký hiệu bảng Anh sẽ xuất hiện]
quan hệ_dict["Giá trị liên quan"] = rel["liên quan"]["giá trị"]
Nếu tôi làm một sự cố đơn giản. addNote[str[results["value"]]], tôi có đầu ra tiếp theo được in trong Notes [tôi chỉ trích xuất phần liên quan]
def myprint[d]:1
stack = d.items[]
while stack:
k, v = stack.pop[]
if isinstance[v, dict]:
stack.extend[v.iteritems[]]
else:
print["%s: %s" % [k, v]]
Cuối cùng, tôi nghĩ rằng tin nhắn cuối cùng của Jared đã chạm vào một điểm ở đây về mã hóa ascii. Tôi cũng nghĩ về điều này, nhưng câu hỏi là tại sao?
Nếu tôi in cái này trong IDE của mình
print[u"Win a \u00a3100 gift card by telling Sky what you think!"]đầu ra là chính xác
def myprint[d]:2
stack = d.items[]
while stack:
k, v = stack.pop[]
if isinstance[v, dict]:
stack.extend[v.iteritems[]]
else:
print["%s: %s" % [k, v]]
Vui lòng đề xuất bất kỳ giải pháp nào
Thanks
------------------------------
Lucian Sipos
Tin nhắn gốc
Gởi. Thứ Hai 13 Tháng Tư, 2020 11. 46 giờ sáng
Từ. Jared Fagel
Môn học. UnicodeEncodeError 'ascii' 'thứ tự không nằm trong phạm vi [128]'
Này Ben,
Tôi tin rằng các tập lệnh xử lý trước/sau về cơ bản đã xác định điều này trên phần phụ trợ
________số 8_______Lỗi này được báo cáo trong chế độ xem trạng thái hành động khi xảy ra. Để thử nghiệm, bạn có thể thử thêm biểu tượng được đề cập vào tên sự cố bằng cách sửa đổi trực tiếp trường. Sau đó, hãy thử chạy tập lệnh hoặc bộ xử lý trước/sau có chứa phương thức truy cập trường. Đơn giản chỉ cần làm một. replace[] sẽ tạo ra cái này
Chúng tôi đã gặp sự cố này và giải pháp của chúng tôi là loại bỏ các ký tự hoặc xử lý chúng trực tiếp trong các chức năng
------------------------------
Jared Fagel
Nhà phân tích an ninh mạng tôi
Tiện ích công cộng
Tin nhắn gốc
Gởi. Thứ Hai 13 Tháng Tư, 2020 08. 53 giờ sáng
Từ. Bến Lurie
Môn học. UnicodeEncodeError 'ascii' 'thứ tự không nằm trong phạm vi [128]'
Tôi muốn hiểu trường hợp sử dụng này tốt hơn. Khả năng phục hồi sẽ có thể xử lý unicode. Có thể một số mã python đang giả sử ASCII trong đó có chuỗi unicode có thể dẫn đến lỗi
Liên kết này https. //www. ibm. com/support/knowledgecenter/en/SSBRUQ_36. 0. 0/doc/playbook/resilient_playbook_configscripts_considerations. html chỉ đề cập đến các chuỗi được mã hóa cứng trong tập lệnh trong sản phẩm. Nếu bạn đã xây dựng từ điển bằng unicode [có vẻ như bạn có] và việc thực thi mã python xử lý unicode thì nó sẽ hoạt động
Bạn đề cập đến lỗi này
UnicodeEncodeError['ascii', u'Giành được thẻ quà tặng \xa3100 bằng cách cho Sky biết suy nghĩ của bạn. ', 6, 7, 'thứ tự không nằm trong phạm vi [128]']