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

http://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

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

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

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

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

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

Đã 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.