【问题标题】:How can I extract credit card substring from a string using python如何使用python从字符串中提取信用卡子字符串
【发布时间】:2018-06-17 01:44:18
【问题描述】:

我是 python 新手,希望有人可以帮助我。我需要从字符串中提取信用卡号。例如

“我的信用卡号是 1234-2312-2312-2312”或 "我的 Credict 卡号是 1234 1234 1832 1234"

有人知道我该怎么做吗?

【问题讨论】:

  • 使用正则表达式从字符串中查找数字。
  • 您好苛刻,感谢您的回复。有什么办法可以通过正则表达式获得与 1234 1234 1832 1234 类似的空格的 CC 号码?
  • 为此,您需要检查空格后的字符串是什么。如果有数字继续,否则停止
  • 这需要有多强大?如果他们在数字之间使用斜线怎么办?还是月经?如果四个数字在不同的行怎么办?
  • 一个非常简单的正则表达式是[0-9]{4}.[0-9]{4}.[0-9]{4}.[0-9]{4},意思是“四位数字,后跟任意单个字符,后跟四位数字,后跟任意单个字符,后跟四位数字,后跟任意单个字符,后跟四位数字。”

标签: python credit-card


【解决方案1】:

使用正则表达式这样做

import re

def findCardNumber(string):
    pattern = r"(^|\s+)(\d{4}[ -]\d{4}[ -]\d{4}[ -]\d{4})(?:\s+|$)"

    match = re.search(pattern, string)

    if match:
        print(match.group(0))

findCardNumber("My Credict card number is 1234 1234 1832 1234")

这也考虑了你的卡号在字符串中的位置,它可以是任何地方——开头、中间或结尾。

【讨论】:

  • 这太完美了!非常感谢!
  • 嗨,Akbar,我有最后一个问题。如何从 match.group(0) 中提取 cc 号码?例如,我有 2 个 CC 号码。例如,我将如何获取每个变量并将其存储在变量中?
  • 嗨!如果一个字符串中有多个 CC 编号,则“match”变量将包括所有这些编号。您可以使用“组”方法提取每个,指定要提取哪个。所以第一个CC号存储在“match.group(0)”中,而第二个CC号存储在“match.group(1)”中,以此类推。
  • 是的,我明白了!但我注意到了一些事情。当模式是这样的我的信用卡号是:1234 1234 1234 1234 结果还包括“:”字符。知道为什么吗?例如“:1234 1234 1234 1234”非常感谢!
  • 哎呀,我的错,而不是 \W 它应该是正则表达式模式字符串中的 \s ,表示任何空白字符。我也编辑了答案。
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2023-01-07
  • 2017-04-01
  • 2015-05-10
  • 2017-01-31
  • 1970-01-01
相关资源
最近更新 更多