Python - 将注释添加到三引号字符串中

时间:2018-04-05 00:00:41

标签: python string python-3.x comments multiline

有没有办法在多行字符串中添加注释,还是不可能?我正在尝试从三引号字符串中将数据写入csv文件。我在字符串中添加注释来解释数据。我尝试这样做,但Python只是假设评论是字符串的一部分。

"""
1,1,2,3,5,8,13 # numbers to the Fibonnaci sequence
1,4,9,16,25,36,49 # numbers of the square number sequence
1,1,2,5,14,42,132,429 # numbers in the Catalan number sequence
"""

2 个答案:

答案 0 :(得分:2)

不,不可能在字符串中添加注释。 python如何知道字符串中的哈希符号gsub应该是注释,而不仅仅是哈希符号?将#字符解释为字符串的一部分而不是注释更为有意义。

作为一种变通方法,您可以使用自动字符串文字连接:

#

答案 1 :(得分:0)

如果您在字符串中添加注释,它们将成为字符串的一部分。如果这不是真的,那么你永远不能在字符串中使用#字符,这将是一个相当严重的问题。

但是,您可以对字符串进行后期处理以删除评论,只要您知道此特定字符串不会包含任何其他#个字符。

例如:

s = """
1,1,2,3,5,8,13 # numbers to the Fibonnaci sequence
1,4,9,16,25,36,49 # numbers of the square number sequence
1,1,2,5,14,42,132,429 # numbers in the Catalan number sequence
"""
s = re.sub(r'#.*', '', s)

如果您还想在#之前删除尾随空格,请将正则表达式更改为r'\s*#.*'

如果您不了解这些正则表达式匹配的内容以及如何匹配,请参阅regex101以获得良好的可视化效果。

如果您计划在同一个程序中多次执行此操作,您甚至可以使用与流行的D = textwrap.dedent成语类似的技巧:

C = functools.partial(re.sub, r'#.*', '')

现在:

s = C("""
1,1,2,3,5,8,13 # numbers to the Fibonnaci sequence
1,4,9,16,25,36,49 # numbers of the square number sequence
1,1,2,5,14,42,132,429 # numbers in the Catalan number sequence
""")