我有以下代码根据下面概述的情况提取给定字符串中的第一组和最后一组数字。它有效,但似乎不是最佳的:
import re
# case 1
pattern = '\d+\ \d+'
string = 'Hello 999 888999'
test = re.findall(pattern, string, flags=0)[0].split()
print('{0}, {1}'.format(test[0], test[len(test)-1]))
# case 2
pattern = '\d+\ \d+;\d+ \d+'
string = 'How are things 999 888999;222 444'
test = re.findall(pattern, string, flags=0)[0].split()
print('{0}, {1}'.format(test[0], test[len(test)-1]))
# case 3
pattern = '\d+\ \d+;\d+ \d+;\d+ \d+'
string = 'It is nice 999 888999;222 444;33 55'
test = re.findall(pattern, string, flags=0)[0].split()
print('{0}, {1}'.format(test[0], test[len(test)-1]))
# case 4
pattern = '\d+\ \d+;\d+ \d+;\d+ \d+;\d+ \d+'
string = 'Please help yourself 999 888999;222 444;33 55;44 6661'
test = re.findall(pattern, string, flags=0)[0].split()
print('{0}, {1}'.format(test[0], test[len(test)-1]))
这4种情况是:
任意数量的单词后跟数字后跟空格后跟数字
任意数量的单词后跟数字后跟空格后跟以“;”分隔的数字 后跟空格后跟数字
任意数量的单词后跟数字后跟空格后跟以“;”分隔的数字 后跟空格后跟以“;”分隔的数字 后跟空格后跟数字
等等。
关于如何一口气做到这一点的任何建议?
相关分类