【问题标题】:Can't convert a string to a customized one using f-Strings无法使用 f-Strings 将字符串转换为自定义字符串
【发布时间】:2021-07-04 17:30:16
【问题描述】:

我正在尝试使用一些值动态创建参数,因此我尝试使用 f-Strings。但是,我无法实现我所期望的。

如果我使用以下值:

lat = '13715482'
lon = '6320767'
some_id = '7783' 

在以下参数中:

parameter = {'lat':f'{lat}','lon':f'{lon}','spatRef':{'spat_id':f'{some_id}'}}

我得到如下输出:

{'lat': '13715482', 'lon': '6320767', 'spatRef': {'spat_id': '7783'}}

但是,我想要得到的是 (notice the two double quotes around the whole string):

"{'lat': '13715482', 'lon': '6320767', 'spatRef': {'spat_id': '7783'}}"

我怎样才能得到它?

【问题讨论】:

  • 你的意思是import json; json.dumps(parameter)
  • 你的意思是:str(parameter)?
  • @Psidom:使用json 将与要求完全相反:在项目周围加上双引号,在所有内容周围加上单引号。
  • @quamrana 当然,但我不知道 OP 要求的格式有多有用。我以为他可能只是想连载它。
  • @Psidom:公平点。

标签: python python-3.x f-string


【解决方案1】:

我认为您正在搜索str()

lat = '13715482'
lon = '6320767'
some_id = '7783'

parameter = str(
  {
    'lat': lat,
    'lon': lon,
    'spatRef': {
      'spat_id': some_id
    }
  }
)

要将其与引号一起使用,您可以使用:

print(f'{parameter!r}')
>>> "{'lat': '13715482', 'lon': '6320767', 'spatRef': {'spat_id': '7783'}}"

这使用字符串的__repr__

【讨论】:

    【解决方案2】:

    您需要打印的字符串的内部表示,为此我们可以使用repr 函数。

    lat = '13715482'
    lon = '6320767'
    some_id = '7783' 
    parameter = {'lat':f'{lat}','lon':f'{lon}','spatRef':{'spat_id':f'{some_id}'}}
    print(repr(str(parameter)))
    

    输出

    C:\Users\albin\Documents\codebase> python3 test.py
    "{'lat': '13715482', 'lon': '6320767', 'spatRef': {'spat_id': '7783'}}"
    

    【讨论】:

    • 您建议的方法确实会在控制台中打印预期的输出。但是,当我在脚本的参数中使用相同的参数时,它不起作用。当我使用json.dumps()str() 时,我发现它们都可以工作。
    • @SMTH 我看不出你的实际目标是什么。您标记为正确的答案与我写的完全相同。
    • 请不要误会。看来我应该更具体地说明我的目标。我基本上是在尝试使用该参数发出 get http 请求。给这个check 看看我最后是怎么用的。谢谢。
    猜你喜欢
    • 2017-11-29
    • 2023-03-11
    • 2017-01-29
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2019-11-29
    相关资源
    最近更新 更多