- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我对 python 中的 .format 机制感到困惑。 (我目前使用的是 2.7.6)
所以,这显然有效:
>>> "hello {test1}".format(**{'test1': 'world'})
'hello world'
也是如此:
>>> "hello {test_1}".format(**{'test_1': 'world'})
'hello world'
但两者都不是:
>>> "hello {test:1}".format(**{'test:1': 'world'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'test'
也不是:
>>> "hello {test.1}".format(**{'test.1': 'world'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'test'
工作。
但出于某种原因,以下内容确实如此:
>>> "hello {test:1}".format(**{'test': 'world'})
'hello world'
所以看起来被替换的字符串中的变量名不能有冒号 :
或句点 .
。有什么办法可以逃脱这些角色吗?我希望从字典中替换的字符串偶尔有一个句点或两个句点或冒号。
最佳答案
这是因为您可以使用格式迷你语言来访问对象的属性。例如,我经常在自己的自定义类工作中使用它。假设我已经为我需要使用的每台计算机定义了一个类。
class Computer(object):
def __init__(self,IP):
self.IP = IP
现在我想对各种计算机做点什么
list_comps = [Computer(name,"192.168.1.{}".format(IP)) for IP in range(12)]
for comp in list_comps:
frobnicate(comp) # do something to it
print("Frobnicating the computer located at {comp.IP}".format(comp=comp))
现在打印出来
Frobnicating the computer located at 192.168.1.0
Frobnicating the computer located at 192.168.1.1
Frobnicating the computer located at 192.168.1.2 # etc etc
因为每次,它都会找到我传递给格式化程序 (comp
) 的对象,获取它的属性 IP
,然后改用它。在您的示例中,您为格式化程序提供了一些看起来像属性访问器 (.
) 的东西,因此它会尝试访问在访问器之前给定的对象,然后查找其定义的属性。
您的最后一个示例之所以有效,是因为它正在寻找 test
,并且找到了! :
符号对格式化程序来说是特殊的,因为它标志着 kwarg
的结束和格式迷你语言的开始。例如:
>>> x = 12.34567
>>> print("{x:.2f}".format(x))
12.34
:
之后的 .2f
告诉字符串格式化程序将参数 x
视为 float
并且在小数点后 2 位数字后截断它。这是 well documented,我强烈建议您仔细阅读此内容并将其加入书签以备将来使用!很有帮助!
关于python - python格式化字符串中标点符号的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687583/
我想将字符串拆分为列表中的单独句子。 例子: string = "Hey! How are you today? I am fine." 输出应该是: ["Hey!", "How are you to
好吧,这是我第一次发帖,所以如果我有任何错误,请多多包涵。长话短说,我得到了一个字符串数组,我的目标是计算字符串的唯一单词数并从数组中删除所有标点符号。 public static HashMap u
我正在尝试为自然语言解析器返回的词性标签和其他标签创建可区分的联合。 在 C#/Java 中通常使用字符串或枚举来表示它们,但在 F# 中似乎更适合区分联合,因为它们是不同的只读值。 在语言引用中,我
我正在处理 go/golang,尝试编写需要字符串和种子的代码。它应该返回一个打乱的字符串,其中单词中的第一个和最后一个字母、标点符号和数字保持不变。 示例: my name is Nikki. My
这个问题在这里已经有了答案: How can I use "." as the delimiter with String.split() in java [duplicate] (8 个答案) 关
我需要一种方法来使用包含省份缩写、全名和地区的词典,而不必为安大略省的每个可能的拼写错误添加条目。表如下: state |name | territory ============
我需要能够仅使用 C++ 字符串才能更改下面的输入段落。我遇到的问题是,当我在末尾拉出带有标点符号的东西时,例如“programs-”,它会将它作为“programs-”拉入我的数组,而不是分别将“p
我编写了一个函数来删除停用词和标记化,如下所示: def process(text, tokenizer=TweetTokenizer(), stopwords=[]): text =
df <- structure(list(`a a` = 1:3, `a b` = 2:4), .Names = c("a a", "a b" ), row.names = c(NA, -3L), c
我正在尝试使用javascript制作一个回文程序,即使字符串有标点符号和空格,它也会通过TRUE或FALSE显示字符串是否是回文(前女士,我是亚当)。但每次我输入一个字符串时,无论字符串是什么,我都
删除选择性连字符 import pandas as pd s = pd.Series(['do not-remove this-hyphen but remove-all of these-hyphe
在 Web 表单条目中,我们看到使用了奇怪的字符,例如: '(windows 1252 编码) 或 ðŸ'•(表情符号) 或 |(不知道,但认为它是 windows 1252) 对于其中一些,我可以使
从字符串中过滤掉所有 UTF-8 标点字符和符号(如✀✁✂✃✄✅✆✇✈等)的最佳和最有效方法是什么。简单地过滤掉所有不在 a-z、A-Z 和 0-9 中的字符不是一种选择,因为我想保留来自其他语言的字
Ruby 中是否有识别 Unicode 标点符号(例如,",-)的正则表达式? 最佳答案 你可以使用这个: /[[:punct:]]/ 有关更多信息,请查看 Regexp class .您也可以在此
我正在尝试创建一个 LPeg 模式,该模式将匹配 UTF-8 编码输入中的任何 Unicode 标点符号。我想出了以下 Selene Unicode 和 LPeg 的结合: local unicode
我正在编写一个Python代码来从输入文件中提取所有URL,其中包含来自Twitter(推文)的内容或文本。然而,在这样做时,我意识到在 python 列表中提取的几个 URL 在末尾有“特殊字符”或
我写emacs lisp代码如下: #!/usr/bin/emacs --script (setq input (read-minibuffer "please input your name:")
这是我的代码。用户将提供输入(任何字符串)而不是“这是一个测试。1 2 3 4 5”。 然后它将显示空格数、标点符号、数字和字母作为输出字符串。 #include #include using n
我正在尝试比较没有任何标点符号、空格、重音符号等的名称。目前我正在做以下事情: -(NSString*) prepareString:(NSString*)a { //remove any a
我正在使用 Ruby on Rails 3.1.0,我想知道如何在 YAML 文件中正确声明冒号(标点符号)。我试图通过在我的 config/locales/defaults/en.yml 文件 中添
我是一名优秀的程序员,十分优秀!