Hướng dẫn python add single quotes to string variable - python thêm dấu ngoặc kép vào biến chuỗi

Đối với những người đang đến đây trong khi googled một cái gì đó như "chuỗi xung quanh Python" và có thời gian tận tâm (hoặc chỉ tìm kiếm giải pháp "tốt nhất").

Tôi sẽ thêm vào rằng hiện tại có các chuỗi F mà đối với môi trường Python 3.6+ dễ sử dụng hơn và (từ những gì tôi đọc) họ nói nhanh hơn.

#f-string approach
term = urllib.parse.quote(f"'{term}'")

Tôi quyết định thực hiện thời gian của từng phương pháp "xung quanh" một chuỗi trong Python.

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")

Results:

concat, 0.009532792959362268
f-string, 0.08994143106974661
join, 0.11005984898656607
%s, 0.15808712202124298
format, 0.2698059631511569

Thật kỳ lạ, tôi nhận được rằng sự kết hợp đó nhanh hơn f-string mỗi khi tôi chạy nó, nhưng bạn có thể sao chép và dán để xem liệu chuỗi/sử dụng của bạn có hoạt động khác không, cũng có thể có một cách tốt hơn để đưa chúng vào thời gian hơn

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
6 thoát khỏi tất cả các trích dẫn, vì vậy hãy cho tôi biết

Hãy thử nó trực tuyến!

@Agf, cảm ơn vì thông tin ..

Để trích dẫn một chuỗi trong Python, hãy sử dụng các dấu ngoặc kép bên trong các dấu ngoặc kép hoặc ngược lại.

example1 = "He said 'See ya' and closed the door."
example2 = 'They said "We will miss you" as he left.'

print(example1)
print(example2)

Output:

He said 'See ya' and closed the door.
They said "We will miss you" as he left.

Ví dụ:

Chuỗi Python

Chuỗi Python là chuỗi các ký tự và số.

Một chuỗi được bọc xung quanh một tập hợp các trích dẫn đơn hoặc trích dẫn kép. Không có sự khác biệt trong đó bạn sử dụng.

Bất cứ điều gì đi vào bên trong các trích dẫn đều được hiểu là là văn bản khác, thay vào đó là một lệnh thực thi.

print("10 + 20")                  # Prints: 10 + 20
print("This # is not a comment")  # Prints: This # is not a comment
print("pow(2,3)")                 # Prints: pow(2, 3)

Để chứng minh, đây là một số ví dụ.

Trong mỗi ví dụ, có một hoạt động Python thường sẽ thực thi. Nhưng bởi vì biểu thức được bọc bên trong một chuỗi, biểu thức được in ra.

print("This "test" causes problems")

Result:

  File "example.py", line 1
    print("This "test" causes problems")
                 ^
SyntaxError: invalid syntax

Nhưng đây là nơi nó trở nên thú vị. Hãy để xem những gì xảy ra khi bạn đặt một báo giá kép bên trong một chuỗi:

  1. import timeit
    
    results = {}
    
    results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
    results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
    results["format"] = timeit.timeit("\"'{}'\".format('test')")
    results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
    results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")
    
    for n, t in sorted(results.items(), key = lambda nt: nt[1]):
        print(f"{n}, {t}")
    
    7
  2. import timeit
    
    results = {}
    
    results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
    results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
    results["format"] = timeit.timeit("\"'{}'\".format('test')")
    results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
    results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")
    
    for n, t in sorted(results.items(), key = lambda nt: nt[1]):
        print(f"{n}, {t}")
    
    8
  3. import timeit
    
    results = {}
    
    results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
    results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
    results["format"] = timeit.timeit("\"'{}'\".format('test')")
    results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
    results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")
    
    for n, t in sorted(results.items(), key = lambda nt: nt[1]):
        print(f"{n}, {t}")
    
    9

Nó nhìn thấy hai chuỗi và tham chiếu đến một đối tượng không tồn tại

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
8. Vì vậy, nó không biết phải làm gì.

Để xem xét vấn đề này, bạn có hai tùy chọn:

  1. Sử dụng các trích dẫn đơn trong trích dẫn đôi (và ngược lại).
  2. Thoát khỏi các trích dẫn bên trong một chuỗi với một dấu gạch chéo ngược. the quotes inside a string with a backslash.

1. Trích dẫn duy nhất bên trong trích dẫn đôi

Để viết một chuỗi được trích dẫn bên trong một chuỗi khác trong Python

  • Sử dụng dấu ngoặc kép trong chuỗi bên ngoài và trích dẫn đơn trong chuỗi bên trong
  • Sử dụng các trích dẫn đơn trong chuỗi bên ngoài và dấu ngoặc kép trong chuỗi bên trong

Đây là một ví dụ:

example1 = "He said 'See ya' and closed the door."
example2 = 'They said "We will miss you" as he left.'

print(example1)
print(example2)

Output:

He said 'See ya' and closed the door.
They said "We will miss you" as he left.

Nhưng nếu điều này là không đủ thì sao? Điều gì sẽ xảy ra nếu bạn muốn có báo giá bên trong báo giá?

Sau đó, bạn cần phải dùng đến những gì được gọi là trình tự thoát. Chúng làm cho nó có thể thêm nhiều trích dẫn trong một chuỗi như bạn muốn.

2. Cách thoát khỏi báo giá trong chuỗi

Để thêm các chuỗi được trích dẫn bên trong các chuỗi, bạn cần thoát khỏi các dấu ngoặc kép. Điều này xảy ra bằng cách đặt một dấu gạch chéo ngược (

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
6) trước khi nhân vật trốn thoát.

Trong trường hợp này, đặt nó trước bất kỳ dấu ngoặc kép nào bạn muốn trốn thoát.

Đây là một ví dụ.

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
0

Output:

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
1

Cách sử dụng dấu gạch chéo ngược trong chuỗi sau đó

Trong Python, dấu gạch chéo ngược là một nhân vật đặc biệt làm cho chuỗi thoát có thể.

Nhưng điều này cũng có nghĩa là bạn không thể sử dụng nó bình thường trong một chuỗi.

Ví dụ:

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
2

Output:

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
3

Để bao gồm một dấu gạch chéo ngược trong một chuỗi, hãy thoát nó với một dấu gạch chéo ngược khác. Điều này có nghĩa là viết một dấu gạch chéo ngược đôi (

concat, 0.009532792959362268
f-string, 0.08994143106974661
join, 0.11005984898656607
%s, 0.15808712202124298
format, 0.2698059631511569
2).

Ví dụ:

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
4

Output:

import timeit

results = {}

results["concat"] = timeit.timeit("\"'\" + 'test' + \"'\"")
results["%s"] = timeit.timeit("\"'%s'\" % ('test',)")
results["format"] = timeit.timeit("\"'{}'\".format('test')")
results["f-string"] = timeit.timeit("f\"'{'test'}'\"") #must me using python 3.6+
results["join"] = timeit.timeit("'test'.join((\"'\", \"'\"))")

for n, t in sorted(results.items(), key = lambda nt: nt[1]):
    print(f"{n}, {t}")
5

Để bao gồm một dấu gạch chéo ngược trong một chuỗi, hãy thoát nó với một dấu gạch chéo ngược khác. Điều này có nghĩa là viết một dấu gạch chéo ngược đôi (concat, 0.009532792959362268 f-string, 0.08994143106974661 join, 0.11005984898656607 %s, 0.15808712202124298 format, 0.2698059631511569 2).

Sự kết luận

Hôm nay bạn đã học cách trích dẫn một chuỗi trong Python.

Cảm ơn vì đã đọc. Tôi hy vọng bạn thích nó!

Mã hóa hạnh phúc!

Đọc thêm

Python Double Trích dẫn so với trích dẫn đơn

Làm thế nào để bạn thêm một trích dẫn duy nhất vào một chuỗi?

Sau đây là các chuỗi của chúng tôi với trích dẫn đơn và đôi. Chuỗi str1 = "Đây là điện thoại di động của Jack"; Chuỗi str2 = "\" Đây là \ "!"; Ở trên, đối với một trích dẫn đơn, chúng ta phải đề cập đến nó bình thường. Tuy nhiên, đối với các trích dẫn kép, sử dụng các trích dẫn sau và thêm một dấu gạch chéo ngay từ đầu cũng như ở cuối.String str1 = "This is Jack's mobile"; String str2 = "\"This is it\"!"; Above, for single quote, we have to mention it normally like. However, for double quotes, use the following and add a slash in the beginning as well as at the end.

Làm thế nào để bạn xử lý một trích dẫn duy nhất trong một chuỗi python?

Sử dụng các trích dẫn đơn trong trích dẫn đôi (và ngược lại). Thoát khỏi các trích dẫn bên trong một chuỗi bằng một dấu gạch chéo ngược ...
"Đây ".
"gây ra vấn đề".

Bạn có thể sử dụng các trích dẫn đơn cho chuỗi không?

Chuỗi được trích xuất đơn: Đó là cách dễ nhất để xác định một chuỗi.Bạn có thể sử dụng nó khi bạn muốn chuỗi được chính xác như nó được viết.Tất cả các chuỗi thoát như \ r hoặc \ n, sẽ được đầu ra theo quy định thay vì có bất kỳ ý nghĩa đặc biệt nào.Quan điểm đơn thường nhanh hơn trong một số trường hợp.You can use it when you want the string to be exactly as it is written. All the escape sequences like \r or \n, will be output as specified instead of having any special meaning. Single-quote is usually faster in some cases.

Làm thế nào để bạn thêm trích dẫn đơn vào một danh sách trong Python?

.....
Để chọn nit, bạn không cần danh sách [] ở đây: (',' .join ('"' + item + '"' cho mục trong các tham số)) ....
@Blender Không, một danh sách không thoát khỏi biểu thức đó.....
@Agf, cảm ơn vì thông tin ..