如何在字符串中放置随机点?
How to place random dots in string?
我有密码
import random
lst = ['.']
string = 'o3oyrwrj0jtirvwp5sh57oed67d5zy'
print ''.join('%s%s' % (x, random.choice(lst) if random.random() > 0.5 else '') for x in string)
它生成符号之间带有随机点的字符串:
o3.oy.r.wrj.0jt.i.rv.w.p5sh57.oe.d6.7.d.5z.y
o3oyr.wr.j.0.j.ti.rvw.p5sh5.7o.e.d6.7.d5zy
o.3o.y.rw.r.j.0.jt.i.r.v.wp.5sh.5.7.oe.d6.7.d5.zy
我需要生成点数从 1 到 10 的字符串,除了结果
点在最后'o.3.oyrwrj.0.jt.irv.wp.5.s.h57oe.d.67.d.5.zy.'
开头的点'o.3.oyrwrj.0.jt.irv.wp.5.s.h57oe.d.67.d.5.zy'
双+点'o..3.oyrwrj.0.jt.irv.wp.5.s.h57oe.d.67.d.5.zy'
我只需要 1 到 10 个点(不是 10+)
您可以使用这个 if 语句:
if string.startswith('.')
# Raise dot at the beginning exception
elif string.endswith('.'):
# Raise dot at the end exception
elif '..' in string:
# Raise double dot exception
您可以使用 random.sample
到 select 一组随机索引,您将在其中插入一个点而不是在每个索引处绘制。
如果您排除第一个和最后一个索引,则从这些索引中形成切片并与 '.'.join
连接将防止点对以及标题和尾随点。
from random import sample
def insert_dots(s, k):
indices = sorted(sample(range(1, len(s) - 1), k))
intervals = []
for i, j in zip([0] + indices, indices + [len(s)]):
intervals.append(s[i:j])
return '.'.join(intervals)
例子
s = 'foobar'
for _ in range(5):
print (insert_dots(s, 3))
输出
fo.o.ba.r
fo.ob.a.r
f.oob.a.r
fo.o.b.ar
fo.o.ba.r
如果你需要随机点数,你可以这样做。
insert_dots(s, randint(1, 10))
我有密码
import random
lst = ['.']
string = 'o3oyrwrj0jtirvwp5sh57oed67d5zy'
print ''.join('%s%s' % (x, random.choice(lst) if random.random() > 0.5 else '') for x in string)
它生成符号之间带有随机点的字符串:
o3.oy.r.wrj.0jt.i.rv.w.p5sh57.oe.d6.7.d.5z.y
o3oyr.wr.j.0.j.ti.rvw.p5sh5.7o.e.d6.7.d5zy
o.3o.y.rw.r.j.0.jt.i.r.v.wp.5sh.5.7.oe.d6.7.d5.zy
我需要生成点数从 1 到 10 的字符串,除了结果
点在最后'o.3.oyrwrj.0.jt.irv.wp.5.s.h57oe.d.67.d.5.zy.'
开头的点'o.3.oyrwrj.0.jt.irv.wp.5.s.h57oe.d.67.d.5.zy'
双+点'o..3.oyrwrj.0.jt.irv.wp.5.s.h57oe.d.67.d.5.zy'
我只需要 1 到 10 个点(不是 10+)
您可以使用这个 if 语句:
if string.startswith('.')
# Raise dot at the beginning exception
elif string.endswith('.'):
# Raise dot at the end exception
elif '..' in string:
# Raise double dot exception
您可以使用 random.sample
到 select 一组随机索引,您将在其中插入一个点而不是在每个索引处绘制。
如果您排除第一个和最后一个索引,则从这些索引中形成切片并与 '.'.join
连接将防止点对以及标题和尾随点。
from random import sample
def insert_dots(s, k):
indices = sorted(sample(range(1, len(s) - 1), k))
intervals = []
for i, j in zip([0] + indices, indices + [len(s)]):
intervals.append(s[i:j])
return '.'.join(intervals)
例子
s = 'foobar'
for _ in range(5):
print (insert_dots(s, 3))
输出
fo.o.ba.r
fo.ob.a.r
f.oob.a.r
fo.o.b.ar
fo.o.ba.r
如果你需要随机点数,你可以这样做。
insert_dots(s, randint(1, 10))