【问题标题】:Clean long string from spaces and tab in python从python中的空格和制表符中清除长字符串
【发布时间】:2018-12-07 21:47:44
【问题描述】:

假设要创建一个长字符串,并且该字符串位于类的方法中,那么编写代码的最佳方法是什么?

def printString():

    mystring = '''title\n
    {{\\usepackage}}\n
    text continues {param}
    '''.format(param='myParameter')

    return mystring

这个方法的格式很好,但是最后的字符串有多余的空格:

a = printString()
print(a)
title

    {\usepackage}

    text continues myParameter

虽然这种方法给出了正确的结果,但如果字符串很长,代码可能会变得混乱:

def printString():

    mystring = '''title\n
{{\\usepackage}}\n
text continues {param}
    '''.format(param='myParameter')

    return mystring

a = printString()
print(a)

title

{\usepackage}

text continues myParameter

获得良好代码质量和结果的一些提示?

【问题讨论】:

    标签: python string format


    【解决方案1】:

    尝试用括号括住你想要的字符串,像这样:

    def printString():
    
        mystring = ('title\n'
                    '{{\\usepackage}}\n'
                    'text continues {param}').format(param='myParameter')
    
        return mystring
    

    这将允许您在 c=控制空格的同时将字符串分成几行。

    【讨论】:

      【解决方案2】:

      您可以使用方括号来保持函数内部长字符串的整洁。

      def printString():
          mystring = ("title\n"
          "{{\\usepackage}}\n"
          "text continues {param}"
          ).format(param='myParameter')
      
          return (mystring)
      
      print(printString())
      

      结果:

      title
      {\usepackage}
      text continues myParameter
      

      您可能还希望显式使用+ 符号来表示字符串连接,但这会将其从编译时操作更改为运行时操作。 Source

      def printString():
          mystring = ("title\n" +
          "{{\\usepackage}}\n" +
          "text continues {param}"
          ).format(param='myParameter')
      
          return (mystring)
      

      【讨论】:

        【解决方案3】:

        您可以使用re.sub 清除每行开头的任何空格和制表符

        >>> import re
        >>> def printString():
        ...     mystring = '''title\n
        ...     {{\\usepackage}}\n
        ...     text continues {param}
        ...     '''.format(param='myParameter')
        ...
        ...     return re.sub(r'\n[ \t]+', '\n', mystring)
        ... 
        

        这给出了以下 o/p

        >>> a = printString()
        >>> print (a)
        title
        
        {\usepackage}
        
        text continues myParameter
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 2015-04-21
          • 1970-01-01
          • 2012-02-07
          • 2011-09-21
          相关资源
          最近更新 更多