繁体   English   中英

使用正则表达式识别 python 中的字符和数字

[英]using regex to identify characters and digits in python

我的电话号码可能如下所示:

927-6847
611-6701p3715ou264-5435
869-6289fillemichelinemoisan
613-5000p4238soirou570-9639cel

等等...

我想识别并将它们分成:

9276847
6116701
2645435
8696289
6135000
5709639

存储在其他地方的字符串:

611-6701p3715ou264-5435
869-6289fillemichelinemoisan
613-5000p4238soirou570-9639cel

当数字之间有一个p时,p 之后的数字是一个扩展 - 获取 p 之前的数字并将整个字符串保存在其他地方 当有ou时,另一个数字在该数字之后开始 当有cel或任何随机字符串时,获取数字部分并将整个字符串保存在其他地方

编辑:这是我尝试过的:

phNumber='928-4612cel'
if not re.match('^[\d]*$', phNumber):
     res = re.match("(.*?)[a-z]",re.sub('[^\d\w]', '', phNumber)).group(1)    

我正在寻找处理案例并确定哪些字符串在通过正则表达式被切断之前具有更多字符

首先让我再次确认您的要求:

  1. 找出模式为“xxx-xxxx”的数字,其中x是0-9中的任意数字,然后保存模式为“xxxxxxx”的数字。
  2. 如果文本中有任何随机字符串,则保存整个字符串。
import re

# make a list to input all the string want to test, 
EXAMPLE = [
    "927-6847",
    "9276847"
    "927.6847"
    "611-6701p3715ou264-5435",
    "6116701p3715ou264-5435",
    "869-6289fillemichelinemoisan",
    "869.6289fillemichelinemoisan",
    "8696289fillemichelinemoisan",
    "613-5000p4238soirou570-9639cel",
]

def save_phone_number(test_string,output_file_name):
    number_to_save = []

    # regex pattern of "xxx-xxxx" where x is digits
    regex_pattern = r"[0-9]{3}-[0-9]{4}"
    phone_numbers = re.findall(regex_pattern,test_string)

    # remove the "-"
    for item in phone_numbers:
        number_to_save.append(item.replace("-",""))

    # save to file
    with open(output_file_name,"a") as file_object:
        for item in number_to_save:
            file_object.write(item+"\n")

def save_somewhere_else(test_string,output_file_name):
    string_to_save = []

    # regex pattern if there is any alphabet in the string
    # (.*) mean any character with any length
    # [a-zA-Z] mean if there is a character that is lower or upper alphabet
    regex_pattern = r"(.*)[a-zA-Z](.*)"
    if re.match(regex_pattern,test_string) is not None:
        with open(output_file_name,"a") as file_object:
            file_object.write(test_string+"\n")

if __name__ == "__main__":

    phone_number_file = "phone_number.txt"
    somewhere_file = "somewhere.txt"

    for each_string in EXAMPLE:
        save_phone_number(each_string,phone_number_file)
        save_somewhere_else(each_string,somewhere_file)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM