我正在准备测试数据,必须使用不同的字母表示அ-20次
ம-30次,த-40次….(它们是UTF-8编码支持的泰米尔语Languague字母)
这可以使用打印语句来实现
{print ( ' ம் ' * 30 ) + ( ' த ' * 40 ) + }
但是,我需要加扰它们,以便它们不会以任何特定顺序出现.我大约有230个字母,我要印刷20、30、40次.然后我需要对它们进行加扰并将它们写入输出文件.
在这方面的任何帮助都是有帮助的.
解决方法:
有很多方法可以解决此问题.最有效的将是使用random
module.
>>> from random import shuffle
>>> my_string = list('This is a test string.')
>>> shuffle(my_string)
>>> scrambled = ''.join(my_string)
>>> print(scrambled)
.sTtha te s rtisns gii
为此,您必须从字符串的字符创建一个列表,因为字符串是immutable.
A new object has to be created if a different value has to be stored.
>>> from random import sample
>>> my_string = 'This is a test string.'
>>> scrambled = random.sample(my_string, len(my_string))
>>> scrambled = ''.join(scrambled)
>>> print(scrambled)
gr.s i tisstheit Tn sa
您不必为此创建列表;因为,根据random.sample文档:
Returns a new list containing elements from the population while leaving the original population unchanged.
The sorted
built-in和random.random
>>> from random import random
>>> my_string = 'This is a test string.'
>>> scrambled = sorted(my_string, key=lambda i: random())
>>> scrambled = ''.join(scrambled)
>>> print(scrambled)
ngi rts ithsT.staie s
您也不需要为此的列表.从排序的文档中:
Return a new sorted list from the items in iterable.
由于在Python中将字符串视为iterable(请参见下文),因此可以对其使用sorted.
可迭代的定义为
An object capable of returning its members one at a time.