2012-01-29 59 views
41

Vâng ... Khi tôi muốn thực hiện lệnh "in" trong python và tôi cần sử dụng dấu ngoặc kép, tôi không biết cách thực hiện mà không đóng câu. Ví dụ:Python - Sử dụng dấu ngoặc kép bên trong dấu ngoặc kép

print " 'một từ mà cần dấu ngoặc kép'"

Nhưng khi tôi cố gắng làm những gì tôi đã làm ở trên, tôi kết thúc đóng câu và tôi không thể đặt từ tôi cần giữa các dấu ngoặc kép.

Tôi có thể làm như thế nào?

Trả lời

129

Bạn có thể làm điều này theo một trong ba cách sau:

1) Sử dụng dấu nháy đơn và đôi với nhau:

>>> print '"A word that needs quotation marks"' 
"A word that needs quotation marks" 

2) Thoát khỏi dấu ngoặc kép trong chuỗi:

>>> print "\"A word that needs quotation marks\"" 
"A word that needs quotation marks" 

3) Sử dụng các chuỗi được trích dẫn ba lần:

>>> print """ "A word that needs quotation marks" """ 
"A word that needs quotation marks" 
+1

Câu trả lời hay nhất, ngay tại đây. – Droogans

+4

Thoát khỏi các dấu ngoặc kép, nhưng các khoảng trống thừa bạn đã đặt vào bây giờ là một phần của chuỗi, dễ dàng được sửa bằng cách loại bỏ các khoảng trắng. Tương tự với chuỗi được trích dẫn ba lần - khoảng trống thừa trở thành một phần của chuỗi và tôi không chắc cách khắc phục điều này khi đặt bên trong "bên cạnh ba" gây ra cú pháp –

+0

@JamesPolley Bạn nói đúng về trường hợp # 3. Tôi đã cố định trường hợp # 2. –

3

Python chấp nhận cả "và" như dấu ngoặc kép, vì vậy bạn có thể làm điều này như:

>>> print '"A word that needs quotation marks"' 
"A word that needs quotation marks" 

Ngoài ra, chỉ cần thoát khỏi khu vực nội "s

>>> print "\"A word that needs quotation marks\"" 
"A word that needs quotation marks" 
6

Bạn cần phải thoát khỏi nó:

>>> print "The boy said \"Hello!\" to the girl" 
The boy said "Hello!" to the girl 
>>> print 'Her name\'s Jenny.' 
Her name's Jenny. 

Xem trang trăn cho string literals.

2

Sử dụng các ký tự thoát đen \

print("Here is, \"a quote\"") 

Nhân vật về cơ bản có nghĩa là bỏ qua bối cảnh ngữ nghĩa của charcter tiếp theo của tôi, và đối phó với nó theo nghĩa đen của nó.

1

bằng Python 3.2.2 trên Windows,

print(""""A word that needs quotation marks" """) 

là ok. Tôi nghĩ rằng đó là sự nâng cao của trình diễn Python.

0

Bạn cũng có thể thử chuỗi Ngoài: print " "+'"'+'a word that needs quotation marks'+'"'

1

Một trường hợp này là phổ biến trong các mục sao là yêu cầu để sử dụng dấu ngoặc cho các quá trình bên ngoài. Cách giải quyết khác là không sử dụng trình bao, điều này sẽ loại bỏ yêu cầu cho một mức trích dẫn.

os.system("""awk '/foo/ { print "bar" }' %""" % filename) 

hữu ích có thể được thay thế bằng

subprocess.call(['awk', '/foo/ { print "bar" }', filename]) 

(mà cũng sửa chữa các lỗi đó bao metacharacters trong filename sẽ cần phải được thoát khỏi vỏ, trong đó mã gốc thất bại trong việc làm; nhưng không có một vỏ, không cần cho điều đó).

Tất nhiên, trong phần lớn các trường hợp, bạn không muốn hoặc cần một quy trình bên ngoài.

with open(filename) as fh: 
    for line in fh: 
     if 'foo' in line: 
      print("bar") 
Các vấn đề liên quan