在python中,如何仅打印由连字符分隔的文件行中的数字?
输入文件中包含的文本如下: ORB Nick医生的“B”argain医疗服务1-800-DOCT在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,但无法得到我想要的确切结果。试试这个(我为您编写了一个函数): 您可以通
原件 著名的雷比萨饼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