Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如何将空格作为变量值处理而不使用引号?_Python_String - Fatal编程技术网

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的解决方案更新了我的答案。这是一个丑陋的问题,但它对你的情况有效。我现在正在使用你的解决方案。谢谢