在python中创建字符串模式

在python中创建字符串模式,python,python-3.x,Python,Python 3.x,我有一个号码 num=5 我想创建一个问号模式,即“”(?,?,?,…n次),其中n是数字 在这种情况下,输出应该是包含5问号的字符串,用逗号分隔 (?,?,?,?,?) #dtype str 我尝试了以下方法: q = '?' q2 = '('+q num = 5 for i in range(num-1): q2 += ','+q q3 = q2+')' print(q3) >>> (?,?,?,?,?) 但是它看起来很长很幼稚,有什么类似于蟒蛇的方法

我有一个号码

num=5

我想创建一个问号模式,即“”(?,?,?,…n次),其中n是数字

在这种情况下,输出应该是包含5问号的字符串,用逗号分隔

(?,?,?,?,?)    #dtype str
我尝试了以下方法:

q = '?'
q2 = '('+q
num = 5

for i in range(num-1):
    q2 += ','+q
q3 = q2+')'
print(q3)
>>> (?,?,?,?,?) 
但是它看起来很长很幼稚,有什么类似于蟒蛇的方法吗?最好是单衬里?

试试以下方法:

s = '({})'.format(','.join('?' for _ in range(5)))
print(s)
输出

(?,?,?,?,?)
或:

解释

  • 第一种方法创建一个生成器,使用“
    ”,使用“
    ”,最后使用方法用括号包围它们
  • 第二种方法是第一种方法的变体,它不使用生成器表达式,而是创建一个由5个
    '?'
    组成的字符串(即
    '???'
    ),因为字符串是可编辑的,所以可以在联接中使用它们
  • 试试这个:

    s = '({})'.format(','.join('?' for _ in range(5)))
    print(s)
    
    输出

    (?,?,?,?,?)
    
    或:

    解释

  • 第一种方法创建一个生成器,使用“
    ”,使用“
    ”,最后使用方法用括号包围它们
  • 第二种方法是第一种方法的变体,它不使用生成器表达式,而是创建一个由5个
    '?'
    组成的字符串(即
    '???'
    ),因为字符串是可编辑的,所以可以在联接中使用它们
  • 您可以尝试:

    >>> '('+','.join(num*["?"])+')'
    '(?,?,?,?,?)'
    
    您可以尝试:

    >>> '('+','.join(num*["?"])+')'
    '(?,?,?,?,?)'
    
    给你

    '(' + ','.join('?'*num) + ')'
    
    给你

    '(' + ','.join('?'*num) + ')'
    

    我将使用f-string语法组装字符串,因为它允许在更基本的逻辑被整理后使用更高级别的抽象:

    q = '?'
    n = 5
    s = ",".join(q*n)  # You get a string without parenthesis: '?,?,?,?,?'
    print(f'({s})') # Here you are adding the parenthesis
    
    有几种方法可以做到这一点。最后,这一切都取决于可读性,有时还取决于性能。F-strings和
    .join()
    都是构建字符串的有效方法

    如果需要,可以将其合并为一个衬里:

    q = '?'
    n = 5
    print(f'({",".join(q*n)})')
    

    我将使用f-string语法组装字符串,因为它允许在更基本的逻辑被整理后使用更高级别的抽象:

    q = '?'
    n = 5
    s = ",".join(q*n)  # You get a string without parenthesis: '?,?,?,?,?'
    print(f'({s})') # Here you are adding the parenthesis
    
    有几种方法可以做到这一点。最后,这一切都取决于可读性,有时还取决于性能。F-strings和
    .join()
    都是构建字符串的有效方法

    如果需要,可以将其合并为一个衬里:

    q = '?'
    n = 5
    print(f'({",".join(q*n)})')
    

    q3=num*(“?”)
    呼吁所有回答以下问题的人:虽然快速回答问题是好的,但只提供一行代码而不解释或记录是一种不好的做法。在未来的几年里,这个问题的访问者将阅读这里的答案。如果无法将未记录的解决方案扩展到类似和更复杂的问题,那么这些解决方案将不会有多大帮助。
    q3=num*(“?”)
    对下面回答的所有人都有吸引力:虽然快速回答是好的,但只提供一行代码而不解释或记录是一种不好的做法。在未来的几年里,这个问题的访问者将阅读这里的答案。如果无法将未记录的解决方案扩展到类似和更复杂的问题,那么这些解决方案就没有多大帮助。提供解决方案而不解释或记录不是一个好方法。尝试解释你的解决方案。给出一个解决方案而不解释或记录它不是一个好方法。尝试解释你的解决方案。给出一个解决方案而不解释或记录它不是一个好方法。给出一个解决方案而不解释或记录它不是一个好方法。