我想让以下命令在python中格式化,在其他命令中遵守每行80个字符的策略:
cmd = """elastic-mapreduce --create --alive \
--instance-type m1.xlarge\
--num-instances 5 \
--supported-product mapr \
--name m7 \
--args "--edition,m7"
"""
虽然在代码中它看起来像多行,但当cmd
执行时我希望它看起来像
elastic-mapreduce --create --alive --instance-type m1.xlarge --num-instances 5 supported-product mapr name m7 args "--edition,m7"
这是我在这里遇到的类似问题:
raise ValueError, "%s hadoop %s version is not supported" % (self.distribution, version)
那条线太长了,我想做点什么:
raise ValueError,\
"%s hadoop %s version is not supported" % (self.distribution, version)
答案 0 :(得分:3)
至于你的第一个代码,你可以编写一个方法来“线性化”你的空白
import re
def linearize_whitespace_regex(text):
formatted = text.strip().replace('\n',' ').replace('\r',' ').replace('\t',' ')
formatted = re.sub(r'\s{2,}',' ',formatted)
return formatted
我使用了正则表达式库,当然这可以在没有使用你自己的解析导入的情况下完成:
def linearize_whitespace_manual(text):
formatted = text.strip().replace('\n',' ').replace('\r',' ').replace('\t',' ')
ws_buf = ''
format_buf = ''
for i in formatted:
if i == ' ':
if len(ws_buf) < 1:
ws_buf += i
else:
format_buf += ws_buf + i
ws_buf = ''
return format_buf
并输出:
>>> cmd = """elastic-mapreduce --create --alive \
... --instance-type m1.xlarge\
... --num-instances 5 \
... --supported-product mapr \
... --name m7 \
... --args "--edition,m7"
... """
>>> linearize_whitespace_regex(cmd)
'elastic-mapreduce --create --alive --instance-type m1.xlarge--num-instances 5 --supported-product mapr --name m7 --args "--edition,m7"'
>>> linearize_whitespace_manual(cmd)
'elastic-mapreduce --create --alive --instance-type m1.xlarge--num-instances 5 --supported-product mapr --name m7 --args "--edition,m7"'
至于你提出的第二个问题,也可以这种方式提出例外:
raise Exception("My error message")
所以你可以这样写:
raise ValueError("%s hadoop %s version is not supported" % (self.distribution, version))
以上述任何方式满足您的生产线要求:
raise ValueError("%s hadoop %s version is not supported"
% (self.distribution, version))
raise ValueError(
"%s hadoop %s version is not supported" % (self.distribution, version))
raise ValueError(
"%s hadoop %s version is not supported"
% (self.distribution, version)
)
答案 1 :(得分:0)
添加\n
应插入新行。