Python\xa

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 json

my_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):
stack = d.items()
while stack:
k, v = stack.pop()
if isinstance(v, dict):
stack.extend(v.iteritems())
else:
print("%s: %s" % (k, v))
0

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:
continue

result = ""
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):
stack = d.items()
while stack:
k, v = stack.pop()
if isinstance(v, dict):
stack.extend(v.iteritems())
else:
print("%s: %s" % (k, v))
1

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):
stack = d.items()
while stack:
k, v = stack.pop()
if isinstance(v, dict):
stack.extend(v.iteritems())
else:
print("%s: %s" % (k, v))
2

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)')

\XA trong Python là gì?

Ký tự \xa0 (không phải \xa như bạn đã nêu) là KHOẢNG CÁCH KHÔNG NGẮT và tất nhiên là tương đương ASCII gần nhất .

ký tự xa0 là gì?

Ký tự \xa0 đại diện cho khoảng cách không ngắt , vì vậy cách để xóa ký tự này khỏi chuỗi là thay thế bằng khoảng trắng. dữ liệu unicode. phương thức chuẩn hóa trả về dạng bình thường cho chuỗi Unicode được cung cấp.

Làm cách nào để xóa xa0 trong gấu trúc Python?

Để xóa xa0 khỏi chuỗi trong Python, chúng ta có thể sử dụng giá trị NFKD trong hàm normalize() , viết tắt của Normalize . Việc sử dụng NFKD trong hàm normalize() dẫn đến việc thay thế tất cả các ký tự thành các giá trị tương đương của chúng.

Ý nghĩa của \xa0 là gì?

\xa0 thực ra là dấu cách không ngắt trong tiếng Latinh1 (ISO 8859-1), cũng như chr(160). Bạn nên thay thế nó bằng một khoảng trắng. chuỗi = chuỗi. thay thế(u'\xa0', u' ') Khi nào. encode('utf-8'), nó sẽ mã hóa unicode thành utf-8, điều đó có nghĩa là mọi unicode có thể được biểu thị bằng 1 đến 4 byte.