Tôi cần tạo chuỗi văn bản ngẫu nhiên của một định dạng cụ thể. Có một số ý tưởng để tôi có thể viết mã bằng Python. Định dạng là < 8 chữ số> < 15 chuỗi ký tự>.Tạo chuỗi văn bản ngẫu nhiên của một mẫu nhất định
Trả lời
#!/usr/bin/python
import random
import string
digits = "".join([random.choice(string.digits) for i in xrange(8)])
chars = "".join([random.choice(string.letters) for i in xrange(15)])
print digits + chars
EDIT: thích ý tưởng sử dụng random.choice tốt hơn so với randint() vì vậy tôi đã cập nhật các mã để phản ánh điều đó.
Lưu ý: điều này giả định các ký tự chữ thường và chữ hoa là mong muốn. Nếu chữ thường chỉ sau đó thay đổi danh sách hiểu thứ hai để đọc:
chars = "".join([random.choice(string.letters[:26]) for i in xrange(15)])
Rõ ràng cho hoa duy nhất bạn có thể chỉ cần lật rằng xung quanh để lát là [26:] thay vì cách khác xung quanh.
Xem ví dụ - Recipe 59873: Random Password Generation.
xây dựng trên công thức nấu ăn, đây là một giải pháp cho câu hỏi của bạn:
from random import choice
import string
def GenPasswd2(length=8, chars=string.letters + string.digits):
return ''.join([choice(chars) for i in range(length)])
>>> GenPasswd2(8,string.digits) + GenPasswd2(15,string.ascii_letters)
'28605495YHlCJfMKpRPGyAw'
>>>
random.sample
là lựa chọn thay thế. Sự khác biệt, như có thể được tìm thấy trong các python.org documentation, là random.sample
mẫu mà không cần thay thế. Do đó, random.sample(string.letters, 53)
sẽ dẫn đến một số ValueError
. Sau đó, nếu bạn muốn để tạo chuỗi ngẫu nhiên của bạn trong tám chữ số và mười lăm ký tự, bạn sẽ viết
import random, string
digits = ''.join(random.sample(string.digits, 8))
chars = ''.join(random.sample(string.letters, 15))
Dưới đây là một phiên bản đơn giản:
import random
import string
digits = "".join([random.choice(string.digits+string.letters) for i in xrange(10)])
print digits
- 1. Tạo chuỗi ngẫu nhiên
- 2. Tạo cùng một chuỗi số ngẫu nhiên
- 3. Trình tạo văn bản ngẫu nhiên dựa trên regex
- 4. Tạo một số ngẫu nhiên gấp đôi của một phạm vi nhất định trong Java
- 5. Tạo chuỗi ngẫu nhiên dựa trên Regex?
- 6. Tạo chuỗi ngẫu nhiên duy nhất để xác định hồ sơ
- 7. Tạo số ngẫu nhiên không đồng nhất
- 8. Tạo một hoán vị ngẫu nhiên thống nhất
- 9. Tạo chuỗi ngẫu nhiên dựa trên cụm từ thông dụng
- 10. ngẫu nhiên chuỗi C#
- 11. Làm cách nào để tạo một chuỗi ngẫu nhiên và duy nhất trong Ruby?
- 12. Trình tạo số ngẫu nhiên không đồng nhất?
- 13. Tạo ID ngẫu nhiên nhỏ
- 14. Tạo ngẫu nhiên "-1" hoặc "1" - Phương pháp ngắn nhất
- 15. Trình tạo số ngẫu nhiên phân phối ngẫu nhiên
- 16. Cách tạo màu ngẫu nhiên trong matplotlib?
- 17. Hiểu phân bố Poisson của trình tạo số ngẫu nhiên
- 18. hiệu quả tạo ra một mẫu ngẫu nhiên của thời gian và ngày giữa hai ngày
- 19. Tạo chuỗi UTF-8 ngẫu nhiên trong Python
- 20. Tạo số ngẫu nhiên lớn
- 21. Tạo một tệp nhị phân ngẫu nhiên
- 22. Tạo hai chuỗi độc lập ngẫu nhiên số (C++)
- 23. Tạo một dãy các số ngẫu nhiên
- 24. Đếm từ tiếng Anh trong một chuỗi ngẫu nhiên
- 25. mẫu thống nhất một cách ngẫu nhiên từ một đơn vị n-chiều simplex
- 26. Cách chọn một dòng ngẫu nhiên từ một tệp văn bản
- 27. Tạo một bộ tạo số giả ngẫu nhiên trong C#
- 28. Tạo số ngẫu nhiên CUDA
- 29. Cách nhanh nhất để tạo các bit ngẫu nhiên
- 30. Tạo địa hình ngẫu nhiên
Nice câu trả lời! (Tôi chưa bao giờ thấy ngẫu nhiên. Trước đây.) –
Giữ các công thức làm dấu trang - http://code.activestate.com/recipes/ – gimel
Có lẽ dễ đọc hơn khi sử dụng string.lowercase và string.uppercase hơn là cắt danh sách. Ngoài ra các giải pháp chỉ giữ nếu OP là hài lòng với chỉ ký tự ASCII, nếu anh ta muốn tạo ra các chuỗi từ toàn bộ ký tự unicode đặt vấn đề trở nên khó khăn hơn nhiều. –