Hướng dẫn python string remove escape characters - chuỗi python loại bỏ các ký tự thoát

Tôi muốn loại bỏ tất cả các loại trình tự thoát khỏi danh sách các chuỗi. Tôi có thể làm cái này như thế nào? đầu vào:

['william', 'short', '\x80', 'twitter', '\xaa', '\xe2', 'video', 'guy', 'ray']

output:

['william', 'short', 'twitter', 'video', 'guy', 'ray']

//docs.python.org/reference/lexical_analysis.html#string-literals

Đã hỏi ngày 13 tháng 11 năm 2011 lúc 22:28Nov 13, 2011 at 22:28

1

Nếu bạn muốn loại bỏ một số ký tự bạn không thích, bạn có thể sử dụng chức năng dịch để loại bỏ chúng:

>>> s="\x01\x02\x10\x13\x20\x21hello world" >>> print(s) !hello world >>> s '\x01\x02\x10\x13 !hello world' >>> escapes = ''.join([chr(char) for char in range(1, 32)]) >>> t = s.translate(None, escapes) >>> t ' !hello world'

Điều này sẽ loại bỏ tất cả các ký tự điều khiển sau:

001 1 01 SOH (start of heading) 002 2 02 STX (start of text) 003 3 03 ETX (end of text) 004 4 04 EOT (end of transmission) 005 5 05 ENQ (enquiry) 006 6 06 ACK (acknowledge) 007 7 07 BEL '\a' (bell) 010 8 08 BS '\b' (backspace) 011 9 09 HT '\t' (horizontal tab) 012 10 0A LF '\n' (new line) 013 11 0B VT '\v' (vertical tab) 014 12 0C FF '\f' (form feed) 015 13 0D CR '\r' (carriage ret) 016 14 0E SO (shift out) 017 15 0F SI (shift in) 020 16 10 DLE (data link escape) 021 17 11 DC1 (device control 1) 022 18 12 DC2 (device control 2) 023 19 13 DC3 (device control 3) 024 20 14 DC4 (device control 4) 025 21 15 NAK (negative ack.) 026 22 16 SYN (synchronous idle) 027 23 17 ETB (end of trans. blk) 030 24 18 CAN (cancel) 031 25 19 EM (end of medium) 032 26 1A SUB (substitute) 033 27 1B ESC (escape) 034 28 1C FS (file separator) 035 29 1D GS (group separator) 036 30 1E RS (record separator) 037 31 1F US (unit separator)

Đối với Python mới hơn 3.1, trình tự là khác nhau:

>>> s="\x01\x02\x10\x13\x20\x21hello world" >>> print(s) !hello world >>> s '\x01\x02\x10\x13 !hello world' >>> escapes = ''.join([chr(char) for char in range(1, 32)]) >>> translator = str.maketrans('', '', escapes) >>> t = s.translate(translator) >>> t ' !hello world'

Đã trả lời ngày 13 tháng 11 năm 2011 lúc 22:45Nov 13, 2011 at 22:45

Sarnoldsarnoldsarnold

101K21 Huy hiệu vàng178 Huy hiệu bạc231 Huy hiệu Đồng21 gold badges178 silver badges231 bronze badges

5

Một cái gì đó như thế này?

>>> from ast import literal_eval >>> s = r'Hello,\nworld!' >>> print(literal_eval("'%s'" % s)) Hello, world!

EDIT: OK, đó không phải là những gì bạn muốn. Những gì bạn muốn nói chung không thể được thực hiện, bởi vì, như @sven Marnach đã giải thích, các chuỗi không thực sự chứa các chuỗi thoát. Đó chỉ là ký hiệu trong các chữ viết.: ok, that's not what you want. What you want can't be done in general, because, as @Sven Marnach explained, strings don't actually contain escape sequences. Those are just notation in string literals.

Bạn có thể lọc tất cả các chuỗi với các ký tự không phải ASCII từ danh sách của mình với

def is_ascii(s): try: s.decode('ascii') return True except UnicodeDecodeError: return False [s for s in ['william', 'short', '\x80', 'twitter', '\xaa', '\xe2', 'video', 'guy', 'ray'] if is_ascii(s)]

Đã trả lời ngày 13 tháng 11 năm 2011 lúc 22:32Nov 13, 2011 at 22:32

Fred Foofred FooFred Foo

348K73 Huy hiệu vàng726 Huy hiệu bạc824 Huy hiệu Đồng73 gold badges726 silver badges824 bronze badges

Bạn có thể lọc ra "các từ" không phải là chữ và số bằng cách sử dụng danh sách hiểu và ['william', 'short', 'twitter', 'video', 'guy', 'ray'] 3:

>>> l = ['william', 'short', '\x80', 'twitter', '\xaa', '\xe2', 'video', 'guy', 'ray'] >>> [word for word in l if word.isalnum()] ['william', 'short', 'twitter', 'video', 'guy', 'ray']

Nếu bạn cũng muốn lọc các số, hãy sử dụng ['william', 'short', 'twitter', 'video', 'guy', 'ray'] 4 thay thế:

>>> l = ['william', 'short', '\x80', 'twitter', '\xaa', '\xe2', 'video', 'guy', 'ray', '456'] >>> [word for word in l if word.isalpha()] ['william', 'short', 'twitter', 'video', 'guy', 'ray']

Đã trả lời ngày 13 tháng 11 năm 2011 lúc 22:34Nov 13, 2011 at 22:34

Johnsywebjohnsywebjohnsyweb

Huy hiệu vàng 132K2323 gold badges179 silver badges243 bronze badges

1

Điều này không thể được thực hiện, ít nhất là ở phạm vi rộng mà bạn đang hỏi. Như những người khác đã đề cập, Python thời gian chạy không biết sự khác biệt giữa một cái gì đó có trình tự thoát và một cái gì đó không có.

Example:

print ('\x61' == 'a')

In ['william', 'short', 'twitter', 'video', 'guy', 'ray'] 5. Vì vậy, không có cách nào để tìm thấy sự khác biệt giữa hai chuỗi này, trừ khi bạn thử một số phân tích tĩnh về tập lệnh Python của bạn.

Đã trả lời ngày 13 tháng 11 năm 2011 lúc 22:45Nov 13, 2011 at 22:45

SarnoldsarnoldAdam Wagner

101K21 Huy hiệu vàng178 Huy hiệu bạc231 Huy hiệu Đồng7 gold badges52 silver badges65 bronze badges

Một cái gì đó như thế này?

['william', 'short', 'twitter', 'video', 'guy', 'ray'] 0

Output:

['william', 'short', 'twitter', 'video', 'guy', 'ray'] 1

EDIT: OK, đó không phải là những gì bạn muốn. Những gì bạn muốn nói chung không thể được thực hiện, bởi vì, như @sven Marnach đã giải thích, các chuỗi không thực sự chứa các chuỗi thoát. Đó chỉ là ký hiệu trong các chữ viết.

Bạn có thể lọc tất cả các chuỗi với các ký tự không phải ASCII từ danh sách của mình vớiSep 18, 2019 at 5:06

Đã trả lời ngày 13 tháng 11 năm 2011 lúc 22:32Jeril

Fred Foofred Foo3 gold badges51 silver badges66 bronze badges

1

348K73 Huy hiệu vàng726 Huy hiệu bạc824 Huy hiệu Đồng

['william', 'short', 'twitter', 'video', 'guy', 'ray'] 2

Bạn có thể lọc ra "các từ" không phải là chữ và số bằng cách sử dụng danh sách hiểu và ['william', 'short', 'twitter', 'video', 'guy', 'ray'] 3:

Nếu bạn cũng muốn lọc các số, hãy sử dụng ['william', 'short', 'twitter', 'video', 'guy', 'ray'] 4 thay thế:14 gold badges49 silver badges67 bronze badges

Đã trả lời ngày 13 tháng 11 năm 2011 lúc 22:34Sep 13, 2013 at 6:45

JohnsywebjohnsywebAKV

Huy hiệu vàng 132K231 gold badge4 silver badges12 bronze badges

0

Làm thế nào để bạn loại bỏ tất cả các ký tự thoát khỏi một chuỗi trong Python?

Khoa học dữ liệu thực tế bằng cách sử dụng Python, bạn có thể sử dụng regexes để loại bỏ các chuỗi thoát ANSI khỏi một chuỗi trong Python. Chỉ cần thay thế các chuỗi thoát bằng một chuỗi trống bằng re.sub (). Regex bạn có thể sử dụng để loại bỏ các chuỗi thoát ANSI là: '(\ x9b | \ x1b \ [) [0-?]substitute the escape sequences with an empty string using re. sub(). The regex you can use for removing ANSI escape sequences is: '(\x9B|\x1B\[)[0-?]

Làm cách nào để bỏ qua một ký tự thoát trong một chuỗi?

Để bỏ qua các chuỗi thoát trong chuỗi, chúng tôi tạo chuỗi thành "chuỗi thô" bằng cách đặt "r" trước chuỗi."Chuỗi thô" in khi nó được gán cho chuỗi.make the string as "raw string" by placing "r" before the string. "raw string" prints as it assigned to the string.

Làm cách nào để loại bỏ các ký tự đặc biệt khỏi một chuỗi trong Python?

Các phương thức sau có thể được sử dụng để loại bỏ các ký tự đặc biệt khỏi chuỗi trong Python,..
Phương thức isalnum () ..
Sử dụng các biểu thức chính quy (regex) trong Python ..
Phương thức thay thế () ..
Phương thức bộ lọc () ..
Phương thức dịch () ..

Làm thế nào để bạn loại bỏ N ở cuối chuỗi trong Python?

Phương pháp 2: Sử dụng hàm Dải () để xóa ký tự dòng mới khỏi chuỗi trong Python.Phương thức Dải () Chức năng được xây dựng của Python được sử dụng để loại bỏ tất cả các không gian dẫn đầu và dấu ngoặc ra khỏi một chuỗi.Nhiệm vụ của chúng tôi có thể được thực hiện bằng cách sử dụng chức năng dải () trong đó chúng tôi kiểm tra trên \ n, như một chuỗi trong một chuỗi.Use the strip() Function to Remove a Newline Character From the String in Python. The strip() method in-built function of Python is used to remove all the leading and trailing spaces from a string. Our task can be performed using strip function() in which we check for “\n” as a string in a string.

Chủ đề