如何在python中生成具有特定长度的任意字符串?

时间:2012-07-20 08:46:51

标签: python string

我需要一个长达100000个字符的字符串。在python中生成这样一个字符串的最有效和最短的方法是什么? 字符串的内容并不重要。

8 个答案:

答案 0 :(得分:5)

类似的东西:

'x' * 100000 # or,

''.join('x' for x in xrange(100000)) # or,

from itertools import repeat
''.join(repeat('x', times=100000))

或者有点混淆字母:

from string import ascii_letters
from random import choice
''.join(choice(ascii_letters) for _ in xrange(100000))

或者,对于一些随机数据:

import os
s = os.urandom(100000)

答案 1 :(得分:3)

你可以简单地做

s = 'a' * 100000

答案 2 :(得分:2)

由于效率很重要,这里是目前提到的一些方法的快速基准:

$ python -m timeit "" "'a'*100000"
100000 loops, best of 3: 4.99 usec per loop

$ python -m timeit "from itertools import repeat" "''.join(repeat('x', times=100000))"
1000 loops, best of 3: 2.24 msec per loop

$ python -m timeit "import array" "array.array('c',[' ']*100000).tostring()"
100 loops, best of 3: 3.92 msec per loop

$ python -m timeit "" "''.join('x' for x in xrange(100000))"
100 loops, best of 3: 5.69 msec per loop

$ python -m timeit "import os" "os.urandom(100000)"
100 loops, best of 3: 6.17 msec per loop

毫不奇怪,在发布的中,使用字符串乘法是迄今为止最快的。

另请注意,将单个字符串乘以多字符串字符串(以获得相同的最终字符串长度)更有效。

$ python -m timeit "" "'a'*100000"
100000 loops, best of 3: 4.99 usec per loop

$ python -m timeit "" "'ab'*50000"
100000 loops, best of 3: 6.02 usec per loop

$ python -m timeit "" "'abcd'*25000"
100000 loops, best of 3: 6 usec per loop

$ python -m timeit "" "'abcdefghij'*10000"
100000 loops, best of 3: 6.03 usec per loop

在Python 2.7.3上测试

答案 3 :(得分:1)

字符串可以使用乘法运算符:

"a" * 100000 

答案 4 :(得分:1)

尝试制作空白字符数组。

import array
longCharArray = array.array('c',[' ']*100000)

这将分配一个大小为100000的' '字符数组

longCharArray.tostring()

将转换为字符串。

答案 5 :(得分:0)

选择一些角色并重复100000次:

 "a"*100000

为什么你会想要这是另一个问题。 。

答案 6 :(得分:0)

您可以尝试这样的事情:

"".join(random.sample(string.lowercase * 385,10000))

答案 7 :(得分:0)

作为一个班轮:

''.join([chr(random.randint(32, 126)) for x in range(30)])

更改range()值以获得不同长度的字符串;更改randint()的范围以获取不同的字符集。