In Python, how do I create a string of n characters in one line of code?

前端 未结 6 1264
梦毁少年i
梦毁少年i 2020-12-02 11:58

I need to generate a string with n characters in Python. Is there a one line answer to achieve this with the existing Python library? For instance, I need a string of 10 l

相关标签:
6条回答
  • 2020-12-02 12:09

    Why "one line"? You can fit anything onto one line.

    Assuming you want them to start with 'a', and increment by one character each time (with wrapping > 26), here's a line:

    >>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
    >>> mkstring(10)
    'abcdefghij'
    >>> mkstring(30)
    'abcdefghijklmnopqrstuvwxyzabcd'
    
    0 讨论(0)
  • 2020-12-02 12:15

    This might be a little off the question, but for those interested in the randomness of the generated string, my answer would be:

    import os
    import string
    
    def _pwd_gen(size=16):
        chars = string.letters
        chars_len = len(chars)
        return str().join(chars[int(ord(c) / 256. * chars_len)] for c in os.urandom(size))
    

    See these answers and random.py's source for more insight.

    0 讨论(0)
  • 2020-12-02 12:18

    if you just want any letters:

     'a'*10  # gives 'aaaaaaaaaa'
    

    if you want consecutive letters (up to 26):

     ''.join(['%c' % x for x in range(97, 97+10)])  # gives 'abcdefghij'
    
    0 讨论(0)
  • 2020-12-02 12:18

    If you can use repeated letters, you can use the * operator:

    >>> 'a'*5
    
    'aaaaa'
    
    0 讨论(0)
  • 2020-12-02 12:26

    To simply repeat the same letter 10 times:

    string_val = "x" * 10  # gives you "xxxxxxxxxx"
    

    And if you want something more complex, like n random lowercase letters, it's still only one line of code (not counting the import statements and defining n):

    from random import choice
    from string import ascii_lowercase
    n = 10
    
    string_val = "".join(choice(ascii_lowercase) for i in range(n))
    
    0 讨论(0)
  • 2020-12-02 12:31

    The first ten lowercase letters are string.lowercase[:10] (if you have imported the standard library module string previously, of course;-).

    Other ways to "make a string of 10 characters": 'x'*10 (all the ten characters will be lowercase xs;-), ''.join(chr(ord('a')+i) for i in xrange(10)) (the first ten lowercase letters again), etc, etc;-).

    0 讨论(0)
提交回复
热议问题