Làm thế nào để viết chuỗi ký tự trong python mà không cần phải thoát khỏi chúng?


97

Có cách nào để khai báo một biến chuỗi trong python sao cho mọi thứ bên trong nó đều được thoát tự động hoặc có giá trị ký tự theo nghĩa đen của nó không?

Tôi không hỏi làm thế nào để thoát khỏi dấu ngoặc kép với dấu gạch chéo, đó là điều hiển nhiên. Những gì tôi yêu cầu là một cách có mục đích chung để biến mọi thứ thành một chuỗi theo nghĩa đen để tôi không phải thực hiện thủ công và thoát khỏi mọi thứ đối với các chuỗi rất lớn. Bất cứ ai biết về một giải pháp? Cảm ơn!

Câu trả lời:



69

Nếu bạn đang xử lý các chuỗi rất lớn, cụ thể là các chuỗi nhiều dòng, hãy lưu ý về cú pháp dấu ngoặc kép:

a = r"""This is a multiline string
with more than one line
in the source code."""

1
Cấu trúc này có giới thiệu các ký tự ngắt dòng không? Tức là, biến asẽ chứa một chuỗi có hai ký tự ngắt dòng?
MadPhysicist

7
@MadPhysicist: Có, chuỗi kết quả sẽ chứa hai dòng mới trong trường hợp trên.
Greg Hewgill

Hiểu. Và nếu một 'split ()' được sử dụng trên chuỗi này, nó sẽ chia theo các dòng theo mặc định?
MadPhysicist

1
@MadPhysicist Mặc định cho .split () là chia theo khoảng trắng và dòng mới là khoảng trắng.
Greg Hewgill

1
Tôi đã sử dụng cái này trước đây và nó hoạt động tốt. Hai điều cần lưu ý: thụt lề (khoảng trắng) trên các dòng khác được bao gồm, điều mong muốn; nếu chuỗi dài xảy ra kết thúc "không tốt, bởi vì toàn bộ điều sẽ kết thúc với """" lỗi cú pháp.
Nagev

9

Không có những điều như vậy. Có vẻ như bạn muốn một cái gì đó như "here document" trong Perl và shell, nhưng Python không có điều đó.

Sử dụng chuỗi thô hoặc chuỗi nhiều dòng chỉ có nghĩa là có ít điều phải lo lắng hơn. Nếu bạn sử dụng một chuỗi thô thì bạn vẫn phải làm việc với một thiết bị đầu cuối "\" và với bất kỳ giải pháp chuỗi nào, bạn sẽ phải lo lắng về việc đóng ", ',' '' hoặc" "" nếu nó được đưa vào dữ liệu của bạn .

Đó là, không có cách nào để có chuỗi

 '   ''' """  " \

được lưu trữ đúng cách trong bất kỳ chuỗi Python nào mà không cần thoát nội bộ của một số loại.



1

(Giả sử bạn không bắt buộc phải nhập chuỗi từ trực tiếp trong mã Python)

để giải quyết vấn đề mà Andrew Dalke đã chỉ ra, chỉ cần nhập chuỗi chữ vào một tệp văn bản và sau đó sử dụng nó;

input_ = '/directory_of_text_file/your_text_file.txt' 
input_open   = open(input_,'r+')
input_string = input_open.read()

print input_string

Thao tác này sẽ in văn bản theo nghĩa đen của bất kỳ thứ gì có trong tệp văn bản, ngay cả khi nó là;

 '   ''' """   \

Không thú vị hay tối ưu, nhưng có thể hữu ích, đặc biệt nếu bạn có 3 trang mã cần thoát ký tự.


-1

nếu chuỗi là một biến, hãy sử dụng. phương pháp repr trên đó:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

>>> print(s.__repr__())
'\tgherkin\n'

Đó không phải là phong cách xấu, mặc dù?
shah.shah

cái gì, gherkins?
đánh dấu

1
bạn có thể sử dụng repr(s)thay thế để có phong cách tốt hơn
xuiqzy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.