Python-如何将空格作为变量值处理而不使用引号?
我有一个字符串Python-如何将空格作为变量值处理而不使用引号?,python,string,Python,String,我有一个字符串“比特率:8000” 我需要将其转换为“-bps 8000”。请注意,参数名称已更改,分隔符也已更改,从':'更改为空格 此外,分隔符并不总是固定的,有时我需要使用相同的程序从':'更改为'-' 更改规则作为配置文件提供,我正在通过ConfigParser模块读取该文件。比如: [params] modify_param_name = bitrate/bps modify_delimiter = :/' ' value = 8000 在我的节目中: orig_param = mo
“比特率:8000”
我需要将其转换为“-bps 8000”
。请注意,参数名称已更改,分隔符也已更改,从':'
更改为空格
此外,分隔符并不总是固定的,有时我需要使用相同的程序从':'
更改为'-'
更改规则作为配置文件提供,我正在通过ConfigParser
模块读取该文件。比如:
[params]
modify_param_name = bitrate/bps
modify_delimiter = :/' '
value = 8000
在我的节目中:
orig_param = modify_param_name.split('/')[0]
new_param = modify_param_name.split('/')[1]
orig_delimiter = modify_delimiter.split('/')[0]
new_delimiter = modify_delimiter.split('/')[1]
new_param_string = new_param + new_delimiter + value
但是,这会产生如下字符串:
-bps' '8000
问题是如何处理没有引号的空格?获取
'
字符串的原因可能与解析修改定界符
值的方式有关
您将其作为字符串读取,因此modify_delimiter==“:/”
当你在做:
new_delimiter = modify_delimiter.split('/')[1]
本质上是modify_delimiter.split('/')
提供了一个[':',“''']
数组
因此,当您执行new_param_string=new_param+new_delimiter+value时
,您正在将'bps'+“'+'8000'
连接在一起
如果您的modify_分隔符
包含字符串':/'
,这将很好地工作:
>>> new_param_string = new_param + new_delimiter + value
>>> new_param_string
'bps 8000'
有人指出,您正在使用
ConfigParser
。不幸的是,我没有看到ConfigParser(在Python2或Python3中)保留尾部空白的选项——看起来它们总是被剥离
在这种情况下,我建议您在配置文件中完全用引号将字符串括起来:
[params]
modify_param_name = bitrate/bps
modify_delimiter = ":/ "
在代码中,当您初始化修改_分隔符
时,请自行去除“
:
modify_delimiter = config.get('params', 'modify_delimiter').strip('"')
这样,尾随空格将得到保留,您应该得到所需的输出。获得
'
字符串的原因可能与您解析修改定界符的方式有关
您将其作为字符串读取,因此modify_delimiter==“:/”
当你在做:
new_delimiter = modify_delimiter.split('/')[1]
本质上是modify_delimiter.split('/')
提供了一个[':',“''']
数组
因此,当您执行new_param_string=new_param+new_delimiter+value时
,您正在将'bps'+“'+'8000'
连接在一起
如果您的modify_分隔符
包含字符串':/'
,这将很好地工作:
>>> new_param_string = new_param + new_delimiter + value
>>> new_param_string
'bps 8000'
有人指出,您使用的是ConfigParser
。不幸的是,我没有看到ConfigParser(在python 2或3中)保留尾部空白的选项—看起来它们总是被剥离
在这种情况下,我建议您在配置文件中完全用引号将字符串括起来:
[params]
modify_param_name = bitrate/bps
modify_delimiter = ":/ "
在代码中,当您初始化修改_分隔符
时,请自行去除“
:
modify_delimiter = config.get('params', 'modify_delimiter').strip('"')
这样,尾随空间将得到保留,您应该得到所需的输出。您不需要引号,但需要.strip()
特别是,在@Ev.Kounis所说的内容中添加.strip(“”)
,或.strip(“\”)
。谢谢,但我无法用.strip()去掉字符串中的引号>>string=“Save”“a”“Tree”
“Save”“a”“Tree”
“Save”“a”“Tree”
您不需要引号,但确实需要.strip()
,具体地说,是在@Ev.Kounis所说的、.strip(“”
”或.strip(“)
。谢谢,但我无法使用.strip()删除字符串中的引号>>string=“保存”“一棵”“树”
解析是通过ConfigParser模块进行的,这有点奇怪。您的解决方案会产生以下结果:[“'1',':',“'”]
我用ConfigParser的解决方案更新了我的答案。这是一个丑陋的问题,但它对你的情况有效。我现在正在使用你的解决方案。谢谢解析是通过ConfigParser模块进行的,这有点奇怪。您的解决方案会产生以下结果:[“'1',':',“'”]
我用ConfigParser的解决方案更新了我的答案。这是一个丑陋的问题,但它对你的情况有效。我现在正在使用你的解决方案。谢谢