Tôi đã đi cùng điều này
__date__ = "$Date: 2011/06$"
và tìm thấy điều này trong các tài liệu
- $$ là một lối thoát; Nó được thay thế bằng một đô la duy nhất.
$identifier
đặt tên cho một trình giữ chỗ thay thế phù hợp với khóa ánh xạ của"identifier"
. Theo mặc định,"identifier"
phải đánh vần một định danh Python. Nhân vật không nhận dạng đầu tiên sau khi ký tự $ chấm dứt đặc tả của người giữ chỗ này.${identifier}
tương đương với định danh $. Nó được yêu cầu khi các ký tự ____99 hợp lệ theo trình giữ chỗ nhưng không phải là một phần của trình giữ chỗ, chẳng hạn như0.import string mytext = "$dog is an animal" replaceDogtoCat = {"dog":"cat"} mytemplate = string.Template[mytext] print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal replaceDogtoGoat = {"dog":"goat"} print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
Nhưng tôi không hiểu nó.
Ai đó có thể giải thích bằng tiếng Anh đơn giản
import string
mytext = "$dog is an animal"
replaceDogtoCat = {"dog":"cat"}
mytemplate = string.Template[mytext]
print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal
replaceDogtoGoat = {"dog":"goat"}
print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
1 để làm gì và đưa ra một số ví dụ tốt nhất?
Karl Knechtel
59.4K10 Huy hiệu vàng86 Huy hiệu bạc132 Huy hiệu đồng10 gold badges86 silver badges132 bronze badges
Đã hỏi ngày 26 tháng 3 năm 2014 lúc 18:24Mar 26, 2014 at 18:24
5
Điều này đã được sử dụng trong bối cảnh thay thế chuỗi. Đối với Ex, nếu bạn có kịch bản với một biến có giá trị khác nhau trong cùng một chuỗi, bạn có thể sử dụng điều này như sau:
import string
mytext = "$dog is an animal"
replaceDogtoCat = {"dog":"cat"}
mytemplate = string.Template[mytext]
print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal
replaceDogtoGoat = {"dog":"goat"}
print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
$ Dog là một biến sẽ được thay thế khi thay thế được thực thi
Đã trả lời ngày 26 tháng 3 năm 2014 lúc 18:33Mar 26, 2014 at 18:33
Venpavenpavenpa
4.17620 Huy hiệu bạc23 Huy hiệu đồng20 silver badges23 bronze badges
Tôi đang viết các chương trình đơn giản cho phòng thí nghiệm đầu tiên của tôi trong lớp giới thiệu CISC của tôi. Các vấn đề không quá khó, yêu cầu đầu vào từ người dùng, chuyển đổi luồng thành float và sau đó xuất ra một lượng được tính toán. Vì các giá trị này đại diện cho số tiền đô la, tôi cần biểu tượng '$' nhưng suy nghĩ đầu tiên của tôi, để in nó cùng với bản in chuỗi ['..... $'] để lại một khoảng trống mà tôi không được phép có. "Tất cả số tiền được in phải được đi trước bằng biểu tượng $, không có không gian can thiệp. Ví dụ: $ 1,20 là chính xác, trong khi $ 1,20 và $ 1,2 không chính xác." Tôi đã có thể tìm ra cách định dạng số thập phân, nhưng không phải là biểu tượng tiền tệ. Điều này là cần thiết cho một số vấn đề. Tôi cũng muốn tìm ra cách tốt nhất để chuyển đổi số thập phân thành tỷ lệ phần trăm. tức là .25 ---> 25 % [với % bao gồm .. không có không gian can thiệp.] Cảm ơn bạn rất nhiều. OS X Yosemite 10.10.5 Python 3.4.3
- Nhà
- Hướng dẫn Python
- Giới thiệu
- Loại dữ liệu
- Bản tường trình
- Nhà điều hành
- Sợi dây
- Tuple
- Danh sách
- Từ điển
- Bộ sưu tập
- Hàm số
- Lớp
- Tập tin
- Chức năng xây dựng
- Mô -đun xây dựng
- Cơ sở dữ liệu
- Biểu cảm thường xuyên
- Chủ đề
- Tkinker
- Wxpython
- XML
- Mạng
- Web CGI
- các cửa sổ
- Hướng dẫn Python
- Sợi dây
- Tuple
Từ điển | ||
5.36.1. | Bộ sưu tập | |
5.36.2. | Hàm số | |
5.36.3. | Lớp | |
5.36.4. | Tập tin | |
5.36.5. | Chức năng xây dựng | |
5.36.6. | Mô -đun xây dựng |
- trừu tượng
- Bản quyền
- Sự chỉ rõ
- Ví dụ
- Thảo luận
- Vấn đề an ninh
- Thực hiện
- Người giới thiệu
trừu tượng
Bản quyền
Bản quyền
Sự chỉ rõ
Sự chỉ rõ
Tài liệu này đề xuất một tính năng nội suy chuỗi cho Python để cho phép định dạng chuỗi dễ dàng hơn. Thay đổi cú pháp được đề xuất là việc giới thiệu tiền tố ‘$ $, kích hoạt cách giải thích đặc biệt của ký tự‘ $ $ trong một chuỗi, theo cách gợi nhớ đến phép nội suy thay đổi được tìm thấy trong vỏ Unix, AWK, Perl hoặc TCL.
Chuỗi được quét từ đầu đến cuối cho ký tự ‘$ $ [
import string
mytext = "$dog is an animal"
replaceDogtoCat = {"dog":"cat"}
mytemplate = string.Template[mytext]
print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal
replaceDogtoGoat = {"dog":"goat"}
print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
2 trong các chuỗi 8 bit hoặc import string
mytext = "$dog is an animal"
replaceDogtoCat = {"dog":"cat"}
mytemplate = string.Template[mytext]
print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal
replaceDogtoGoat = {"dog":"goat"}
print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
3 trong chuỗi Unicode]. Nếu không có ký tự ‘$ $, chuỗi được trả về không thay đổi.Bất kỳ ‘$ $ được tìm thấy trong chuỗi, theo sau là một trong hai loại biểu thức được mô tả dưới đây, được thay thế bằng giá trị của biểu thức như được đánh giá trong các không gian tên hiện tại. Giá trị được chuyển đổi với
import string
mytext = "$dog is an animal"
replaceDogtoCat = {"dog":"cat"}
mytemplate = string.Template[mytext]
print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal
replaceDogtoGoat = {"dog":"goat"}
print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
4 nếu chuỗi chứa là chuỗi 8 bit hoặc với import string
mytext = "$dog is an animal"
replaceDogtoCat = {"dog":"cat"}
mytemplate = string.Template[mytext]
print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal
replaceDogtoGoat = {"dog":"goat"}
print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
5 nếu nó là chuỗi unicode.- Một định danh Python tùy chọn theo sau bởi bất kỳ số lượng trailer nào, trong đó một đoạn giới thiệu bao gồm: - một dấu chấm và một định danh, - một biểu thức được đặt trong ngoặc vuông, hoặc - một danh sách đối số được đặt trong ngoặc đơn [đây chính xác là mẫu được thể hiện trong Python Ngữ pháp của người Hồi giáo ____ ____16, sử dụng các định nghĩa trong
7.]import string mytext = "$dog is an animal" replaceDogtoCat = {"dog":"cat"} mytemplate = string.Template[mytext] print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal replaceDogtoGoat = {"dog":"goat"} print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
- Bất kỳ biểu thức python hoàn chỉnh được bao bọc trong niềng răng xoăn.
Hai dấu hiệu đô la [Hồi $$] được thay thế bằng một chiếc $ $.
Ví dụ
Dưới đây là một ví dụ về một phiên tương tác thể hiện hành vi dự kiến của tính năng này.
>>> a, b = 5, 6 >>> print $'a = $a, b = $b' a = 5, b = 6 >>> $u'uni${a}ode' u'uni5ode' >>> print $'\$a' 5 >>> print $r'\$a' \5 >>> print $'$$$a.$b' $5.6 >>> print $'a + b = ${a + b}' a + b = 11 >>> import sys >>> print $'References to $a: $sys.getrefcount[a]' References to 5: 15 >>> print $"sys = $sys, sys = $sys.modules['sys']" sys = , sys = >>> print $'BDFL = $sys.copyright.split[][4].upper[]' BDFL = GUIDO
Thảo luận
‘$, Được chọn làm nhân vật nội suy trong chuỗi vì mục đích quen thuộc, vì nó đã được sử dụng cho mục đích này trong nhiều ngôn ngữ và ngữ cảnh khác.
Sau đó, việc chọn ‘$ $ là tiền tố, vì nó là một bản ghi nhớ cho ký tự nội suy.
Các rơ moóc được phép cung cấp cơ chế nội suy này thậm chí còn nhiều sức mạnh hơn so với phép nội suy có sẵn trong hầu hết các ngôn ngữ khác, trong khi biểu thức được nội suy vẫn có thể nhìn thấy rõ và không có niềng răng xoăn.
‘$ Hoạt động giống như một nhà điều hành và có thể được thực hiện như một nhà điều hành, nhưng điều đó ngăn chặn tối ưu hóa thời gian biên dịch và đưa ra các vấn đề bảo mật. Vì vậy, nó chỉ được phép làm tiền tố chuỗi.
Vấn đề an ninh
Càng $ $ có sức mạnh để đánh giá, nhưng chỉ để đánh giá một nghĩa đen. Như được mô tả ở đây [một tiền tố chuỗi chứ không phải là một nhà điều hành], nó không giới thiệu các vấn đề bảo mật mới vì các biểu thức được đánh giá phải có mặt theo nghĩa đen trong mã.
Thực hiện
Mô -đun
import string
mytext = "$dog is an animal"
replaceDogtoCat = {"dog":"cat"}
mytemplate = string.Template[mytext]
print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal
replaceDogtoGoat = {"dog":"goat"}
print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
8 tại [1] cung cấp một nguyên mẫu của tính năng này. Nó sử dụng mô -đun import string
mytext = "$dog is an animal"
replaceDogtoCat = {"dog":"cat"}
mytemplate = string.Template[mytext]
print mytemplate.substitute[replaceDogtoCat] #output: cat is an animal
replaceDogtoGoat = {"dog":"goat"}
print mytemplate.substitute[replaceDogtoGoat] #output: goat is an animal
9 để tìm phần cuối của biểu thức được nội suy, sau đó gọi from string import Template s = Template["Make $$ selling $x!"] s.substitute[x='slurm'] print s0 trên biểu thức mỗi khi cần một giá trị. Trong nguyên mẫu, biểu thức được phân tích cú pháp và biên dịch lại mỗi lần nó được đánh giá.
Là một tối ưu hóa, các chuỗi nội suy có thể được biên dịch trực tiếp vào mã byte tương ứng; đó là,
có thể được biên dịch như thể nó là biểu thức
['a = ' + str[a] + ', b = ' + str[b]]
để nó chỉ cần được biên dịch một lần.