2009-12-15 37 views
15

Tôi muốn kiểm tra xem chuỗi đã cho là đơn hay kép được trích dẫn. Nếu nó là trích dẫn duy nhất tôi muốn chuyển đổi nó để được báo giá gấp đôi, khác nó phải được cùng một dấu ngoặc kép.Chuyển đổi một chuỗi được trích dẫn thành chuỗi kép được trích dẫn

+3

Tôi không thuyết phục tất cả mọi người được giải thích câu hỏi của bạn đúng theo ý bạn. Các chuỗi này có chứa các dấu ngoặc kép đơn và kép * như một phần của nội dung * không? Cách tốt nhất để giải thích câu hỏi của bạn là bao gồm một số ví dụ về đầu vào bạn có, cách bạn muốn đầu ra xuất hiện, v.v. Nếu có thể, hãy sao chép và dán từ phiên giao diện điều khiển Python thực tế để không có cách chúng ta có thể nhầm lẫn ý bạn là gì. –

Trả lời

5

Sự khác biệt chỉ ở đầu vào. Họ giống nhau.

s = "hi" 
t = 'hi' 
s == t 

Đúng

Bạn thậm chí có thể làm:

"hi" == 'hi' 

Đúng

Cung cấp cả hai phương pháp rất hữu ích vì bạn có thể ví dụ có chuỗi của bạn chứa trực tiếp ' hoặc " mà không cần thoát.

+0

Tương tự như vậy, cũng không có sự khác biệt giữa chuỗi được trích dẫn thường xuyên ('" foo "') và chuỗi được trích dẫn ba ("" "" foo "" "'). –

+0

@Brain 'json.dumps ('dog')' ouputs ''" dog "'' vào tệp nhưng tôi muốn '" chó "'. Làm thế nào để làm điều đó? – chandresh

10

Không có sự khác biệt giữa các dấu "đơn được trích dẫn" và "được trích dẫn kép" trong Python: cả hai được phân tích nội bộ thành các đối tượng chuỗi.

Ý tôi là:

a = "European Swallow" 
b = 'African Swallow' 

Are nội bộ đối tượng chuỗi.

Tuy nhiên, bạn có thể muốn thêm dấu trích dẫn bên trong một đối tượng chuỗi để nội dung tự hiển thị được trích dẫn khi được in/xuất?

c = "'Unladen Swallow'" 

?

Ah - trao clarifciation (được đăng như một commetn bởi Kumar, dưới đây):

Nếu bạn có một kết hợp của dấu ngoặc kép bên trong một chuỗi như:

a = """ Merry "Giáng sinh"! hạnh phúc 'năm mới' """

sau đó, bạn có thể sử dụng 'thay thế' phương pháp để chuyển đổi thì tất cả thành một loại:

a = a.replace('"', "'") 

Nếu bạn tình cờ đã lồng dây, sau đó thay thế linh sam t có dấu ngoặc kép hiện có để dấu ngoặc kép trốn thoát, và sau đó có dấu ngoặc kép otuer:

a = """This is an example: "containing 'nested' strings" """ 
a = a.replace("'", "\\\'") 
a = a.replace('"', "'") 
+0

cảm ơn bạn lần đầu tiên Trên thực tế đang nhận được chuỗi quote đơn, đôi trích dẫn chuỗi động và cũng đang sử dụng urljoin (dublequote, singlequote) vì vậy đây tôi phải đối mặt với vấn đề đầu ra là sự kết hợp cả hai nhưng tôi cần nó như là duy nhất – Kumar

+3

Khi sử dụng 'json', nó tạo ra rất nhiều sự khác biệt giữa một chuỗi trong' '' 'và' "". ' – chandresh

+1

'json.dumps (' dog ')' ouputs ''" dog "'' vào tệp nhưng tôi muốn ' "chó". Làm thế nào để làm điều đó? – chandresh

2

Trong Python, không có sự khác biệt giữa các chuỗi có đơn hoặc kép trích dẫn, vì vậy tôi không biết lý do tại sao bạn sẽ muốn làm điều này . Tuy nhiên, nếu bạn thực sự có nghĩa là các ký tự trích dẫn đơn bên trong một chuỗi, sau đó thay thế chúng bằng dấu ngoặc kép, bạn sẽ làm điều này: mystring.replace('\'', '"')

+1

Tôi thích 'string.replace (" '",'" ') 'hơi tốt hơn — nó có một mô hình xen kẽ đẹp –

+0

cảm ơn bạn rất nhiều cảm ơn bạn đầu tiên Thực sự nhận được chuỗi trích dẫn đơn, chuỗi trích dẫn đôi động và cũng đang sử dụng urljoin (dublequote, singlequote) vì vậy ở đây tôi phải đối mặt với vấn đề đầu ra là kết hợp cả hai. .. Cảm ơn bạn rất nhiều – Kumar

+0

Cảm ơn bạn đã trả lời câu hỏi thay vì đi sâu vào chi tiết về cách python diễn giải dấu ngoặc kép. Tôi đã có trường hợp sử dụng khi tệp cần lặp lại kép được đặt với dấu nháy đơn để nó có thể được chuyển sang một ngôn ngữ khác nhạy cảm với kiểu trích dẫn. –

6

Có vẻ như bạn đang làm việc với json. Tôi sẽ chỉ cần đảm bảo nó luôn luôn là một quouted như thế này đôi:

doubleQString = "{0}".format('my normal string') 
with open('sampledict.json','w') as f: 
    json.dump(doubleQString ,f) 

Thông báo Tôi đang sử dụng dump, khôngdumps.

Sampledict.json sẽ trông như thế này:

"my normal string" 
Các vấn đề liên quan