相关疑难解决方法(0)

python格式字符串未使用的命名参数

比方说我有:

action = '{bond}, {james} {bond}'.format(bond='bond', james='james')
Run Code Online (Sandbox Code Playgroud)

这个输出:

'bond, james bond' 
Run Code Online (Sandbox Code Playgroud)

接下来我们有:

 action = '{bond}, {james} {bond}'.format(bond='bond')
Run Code Online (Sandbox Code Playgroud)

这将输出:

KeyError: 'james'
Run Code Online (Sandbox Code Playgroud)

是否有一些解决方法可以防止此错误发生,例如:

  • 如果keyrror:忽略,别管它(但要解析别人)
  • 比较格式字符串和可用的命名参数,如果缺少则添加

python string string-formatting missing-data defaultdict

48
推荐指数
5
解决办法
2万
查看次数

如何在python 3.6中转义f字符串?

我有一个字符串,我想要花括号,但也利用f字符串功能.是否有一些适用于此的语法?

这有两种方法不起作用.我想将文字文本" {bar}"包含在字符串中.

foo = "test"
fstring = f"{foo} {bar}"
Run Code Online (Sandbox Code Playgroud)

NameError:未定义名称"bar"

fstring = f"{foo} \{bar\}"
Run Code Online (Sandbox Code Playgroud)

SyntaxError:f-string表达式部分不能包含反斜杠

期望的结果:

'test {bar}'
Run Code Online (Sandbox Code Playgroud)

编辑:看起来这个问题有相同的答案如何在python字符串中打印文字大括号字符,并使用.format吗?,但你只能知道,如果你知道格式函数使用与f字符串相同的规则.所以希望这个问题对于将f-string搜索者与这个答案联系起来是有价值的.

python python-3.6 f-string

41
推荐指数
1
解决办法
2万
查看次数

如何让Python优雅地格式化None和不存在的字段

如果我用Python写:

data = {'n': 3, 'k': 3.141594, 'p': {'a': 7, 'b': 8}}
print('{n}, {k:.2f}, {p[a]}, {p[b]}'.format(**data))
del data['k']
data['p']['b'] = None
print('{n}, {k:.2f}, {p[a]}, {p[b]}'.format(**data))
Run Code Online (Sandbox Code Playgroud)

我明白了:

3, 3.14, 7, 8
Traceback (most recent call last):
  File "./funky.py", line 186, in <module>
    print('{n}, {k:.2f}, {p[a]}, {p[b]}'.format(**data))
KeyError: 'k'
Run Code Online (Sandbox Code Playgroud)

而不是错误消息,我如何让Python更优雅地格式化None和不存在的字段?

举个例子,我想在输出中看到更像:

3, 3.14, 7, 8
3, ~, 7, ~
Run Code Online (Sandbox Code Playgroud)

当然,理想情况下,我希望能够指定使用的字符串而不是那些缺少的值.

python string-formatting missing-data

28
推荐指数
3
解决办法
2万
查看次数

21
推荐指数
1
解决办法
2万
查看次数

如果未在str.format中传递,则将值保留为空

我遇到了一个相当简单的问题,我无法想出一个优雅的解决方案.

我正在str.format一个函数中创建一个字符串,该函数在一个dict替换中传递以用于格式.我想创建字符串并使用值格式化它们,如果它们被传递,否则将它们留空.

防爆

kwargs = {"name": "mark"}
"My name is {name} and I'm really {adjective}.".format(**kwargs)
Run Code Online (Sandbox Code Playgroud)

应该回来

"My name is mark and I'm really ."
Run Code Online (Sandbox Code Playgroud)

而不是抛出KeyError(如果我们不做任何事情会发生什么).

令人尴尬的是,我甚至无法为这个问题提出一个不优雅的解决方案.我想我可以通过不使用来解决这个问题str.format,但如果可能的话,我宁愿使用内置(主要是我想要的).

注意:我事先并不知道将使用哪些密钥.如果有人包含一把钥匙但是没有把它放在kwargs dict中,我试图优雅地失败.如果我100%准确地知道将要查找哪些键,我只需填充所有键并完成它.

python string-formatting missing-data

20
推荐指数
2
解决办法
6001
查看次数

用python打印乳胶配方

如何在python中显示一个简单的乳胶配方?也许numpy是正确的选择?

编辑:

我有python代码,如:

a = '\frac{a}{b}'
Run Code Online (Sandbox Code Playgroud)

并希望在图形输出中打印(如matplotlib).

python latex formula

12
推荐指数
4
解决办法
3万
查看次数

如何使用.format()打印字符串,并在替换的字符串周围打印文字大括号

可能重复:
如何在python字符串中打印文字"{}"字符并在其上使用.format?

基本上,我想使用.format(),如下所示:

my_string = '{{0}:{1}}'.format('hello', 'bonjour')
Run Code Online (Sandbox Code Playgroud)

并匹配:

my_string = '{hello:bonjour}' #this is a string with literal curly brackets
Run Code Online (Sandbox Code Playgroud)

但是,第一段代码给了我一个错误.

大括号很重要,因为我使用Python通过基于文本的命令与一个软件进行通信.我无法控制fosoftware所期望的格式,因此我最终整理出所有格式是至关重要的.它在字符串周围使用大括号来确保字符串中的空格被解释为单个字符串,而不是多个参数 - 就像通常使用文件路径中的引号一样.

我目前正在使用旧方法:

my_string = '{%s:%s}' % ('hello', 'bonjour')
Run Code Online (Sandbox Code Playgroud)

这当然有效,但.format()似乎更容易阅读,当我在一个字符串中发送包含五个或更多变量的命令时,可读性成为一个重要问题.

谢谢!

python string formatting string-formatting curly-brackets

12
推荐指数
1
解决办法
2万
查看次数

在Python中对字符串使用.format时的KeyError

我有一个字符串,我想使用python的.format函数在运行时添加一些变量,这是我的字符串:

'{"auth": {"tenantName": "{Insert String Here}", "passwordCredentials": {"username": "{insert String here}", "password": "{insert String Here}"}}}'
Run Code Online (Sandbox Code Playgroud)

当我像这样使用.format:

credentials='{"auth": {"tenantName": "{tenant}", "passwordCredentials": {"username": "{admin}", "password": "{password}"}}}'.format(tenant='me',admin='test',password='123')
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

KeyError: '"auth"'
Run Code Online (Sandbox Code Playgroud)

任何帮助?提前致谢.

python string

11
推荐指数
2
解决办法
6504
查看次数

如何在json格式的字符串中使用python str.format

Python版本3.5

我正在尝试进行API调用以使用json作为格式配置设备.一些json会根据所需的命名而有所不同,所以我需要在字符串中调用一个变量.我可以使用旧样式完成此操作%s... % (variable),但不能使用新样式{}... .format(variable).

EX失败:

(Testing with {"fvAp":{"attributes":{"name":(variable)}}})

a = "\"app-name\""

app_config = ''' { "fvAp": { "attributes": { "name": {} }, "children": [ { "fvAEPg": { "attributes": { "name": "app" }, "children": [ { "fvRsBd": { "attributes": { "tnFvBDName": "default" }, } } ] } }, { "fvAEPg": { "attributes": { "name": "db" }, "children": [ { "fvRsBd": { "attributes": { "tnFvBDName": "default" }, } } ] } } ] } } '''.format(a)

print(app_config) …
Run Code Online (Sandbox Code Playgroud)

python json string-formatting python-3.x

11
推荐指数
1
解决办法
6056
查看次数

为什么Python在格式化时将此字符串解释为字典?

我在使用format看起来像Python字典的字符串时遇到问题.

我想生成以下字符串:{"one":1} 如果我尝试这样做:

'{"one":{}}'.format(1)
Run Code Online (Sandbox Code Playgroud)

解释器抛出一个KeyError:

>>> a = '{"one":{}}'.format(1)
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
KeyError: '"one"'
Run Code Online (Sandbox Code Playgroud)

据我所知,这个问题大概在该字符串中包含的事实围绕{,可以用混淆format{}.为什么会发生这种情况,如何解决?

我知道百分比格式,但我想找到一个不涉及开沟的解决方案format().

python string string-formatting python-3.x

11
推荐指数
2
解决办法
1331
查看次数