在python中,如何仅打印由连字符分隔的文件行中的数字?

在python中,如何仅打印由连字符分隔的文件行中的数字?,python,regex,string,file,module,Python,Regex,String,File,Module,输入文件中包含的文本如下: ORB Nick医生的“B”argain医疗服务1-800-DOCT原件 著名的雷比萨饼555-PIZA奥托的“我的驾驶怎么样”555-8821 犁王555-4796椒盐卷饼车555-3226约翰·弗里克教授 实验室555-5782无线电心理医生555-7246 以下为预期产出- 11800 555 555 8821555 4796555 3226555 5782555 7246 我尝试使用re,但无法得到我想要的确切结果。试试这个(我为您编写了一个函数): 您可以通

输入文件中包含的文本如下:

ORB Nick医生的“B”argain医疗服务1-800-DOCT
原件 著名的雷比萨饼555-PIZA
奥托的“我的驾驶怎么样”555-8821
犁王555-4796
椒盐卷饼车555-3226
约翰·弗里克教授 实验室555-5782
无线电心理医生555-7246

以下为预期产出-

11800
555
555 8821
555 4796
555 3226
555 5782
555 7246

我尝试使用re,但无法得到我想要的确切结果。

试试这个(我为您编写了一个函数):

您可以通过更改希望机器查找的值来修复任何问题,但这就是即使使用连字符也只能获取数字数据的方式。 另外,我不是这个问题的真正粉丝,因为它只要求文件中的数字,但是你发布了与之矛盾的细节。我只是回答这个问题。 这并不是最有效的代码,但它是可编辑的。for循环中的:14限制了机器打印的数据量,因为它似乎就是您想要的。你可以随意更改限额。你真的不需要while循环,它只适合测试。如果您希望每个数字之间有一个空格,那么只需为每个端点插入一个空格=“如果您不想限制并且希望打印所有数据,那么只需删除:14即可。
当您输入所有数字时,输出应该是这样的

您可以发布一些示例代码来显示您使用re模块所做的尝试吗?
def re_make_string(get_string):

    buffer_last = []
    for chars in get_string:

        if chars == "-" or chars == " ":
            buffer_last.append(" ")

        try:
            int(chars)
        except:
            pass
        else:
            buffer_last.append(chars)

    re_data = ''.join(buffer_last).replace("   ", " ").replace("  ", " ").strip()
    return re_data


print(re_make_string("""ORB Dr Nick's "B"argain Medical Services 1-800-DOCT Original Famous Ray's Pizza 555-PIZA Otto's "How's my Driving" 555-8821 Plow King 555-4796 Pretzel Wagon 555-3226 Prof John Frink's Lab 555-5782 Radio Psychaiatrist 555-7246"""))
while True:
    data = input() # you could also switch input for the data you have above
    #put whatever you want to the script to look for below for a specific character

    digitOne = '1'
    digitTwo = '2'
    digitThree = '3'
    digitFour = '4'
    digitFive = '5'
    digitSix = '6'
    digitSeven = '7'
    digitEight = '8'
    digitNine = '9'
    for i in range(0, len(data[:14])):
        if data[i] == digitOne or data[i] == digitTwo or data[i] == digitThree:
            print(data[i], end = "")
        elif  data[i] == digitFour or data[i] == digitFive or data[i] == digitSix:
            print(data[i], end = "")
        elif  data[i] == digitSeven or data[i] == digitEight or data[i] == digitNine:
             print(data[i], end = "")
        else:
            print("", end = "")
        #print('\n') not necesary ,but if you want to start the input on the new line