2012-03-16 75 views
6

Vì vậy, tôi có một tệp csv chứa số thẻ tín dụng đầy đủ .. Chúng tôi không cần số đầy đủ và vì vậy tôi viết một kịch bản nhanh để phân tích cú pháp thông qua csv và thay thế số cc bằng một biểu tượng có mặt nạ. (tất cả * ngoại trừ bốn người cuối cùng). Tôi khá mới để trăn và hack nó lên, và nó hoạt động, nhưng để tìm hiểu tôi muốn biết nếu nó có thể được thực hiện dễ dàng hơn.Có cách nào tốt hơn để che giấu một số thẻ tín dụng trong python?

Giả sử rằng "str" ​​sẽ là số thẻ tín dụng đầy đủ. Nhưng vì lợi ích của ví dụ của tôi, tôi chỉ sử dụng chuỗi "CREDITCARDNUMBER".

str = "CREDITCARDNUMBER"; 
strlength = len(str) 
masked = strlength - 4 
slimstr = str[masked:] 
print "*" * masked + slimstr 

Đầu ra là chính xác những gì tôi muốn

************MBER 

Nhưng tôi chắc chắn có một giải pháp thanh lịch hơn. :) Cảm ơn!

+0

bằng cách nhìn vào này tôi đoán bạn một đoạn code ngắn hơn 1 ~ 2 dòng – pyCthon

+2

tại sao không chỉ in 4 số cuối ? là dấu hoa thị cần thiết? – serk

+0

Bạn có thể muốn chấp nhận một trong những câu trả lời này –

Trả lời

6

Có lẽ hơi tao nhã hơn:

card = "CREDITCARDNUMBER" 
print "*" * (len(card) - 4) + card[-4:] 

Lưu ý rằng tôi đã tránh sử dụng tên str vì đó đã là tên của các built-in kiểu string. Thường thì không nên sử dụng tên để che giấu tên được cài sẵn.

0

Bạn có thể làm cho nó ngắn hơn một chút như vậy:

str = "CREDITCARDNUMBER"; 
print "*" * (len(str) - 4) + str[-4:]; 
13

gọn gàng vẫn:

>>> s = "CREDITCARDNUMBER" 
>>> s[-4:].rjust(len(s), "*") 
'************MBER' 
+0

Cảm ơn tôi đánh giá cao sự trợ giúp! –

2

Với Format StringSlicings:

'{:*>16}'.format(card[-4:]) 
+0

ngọt ngào !, tôi sửa đổi nó một chút để đối phó với chiều dài động '('{: *>' + str (len (thẻ) - 4) + '}') định dạng (thẻ [-4:])' –

1

Đối với những người muốn giữ Issuer Identification Number (IIN) (trước đây được gọi là "Mã số nhận dạng ngân hàng" (BIN)), mà thường là 6 chữ số đầu tiên là, mà nên thực hiện công việc:

print card[:6] + 'X' * 6 + card[-4:] 
'455694XXXXXX6539' 
Các vấn đề liên quan