我已经考虑了一段时间了,但还没有提出一个有效的解决方案,不使用一系列if-elif语句。
我们说我有以下字符串:
'Tennessee Tech'
'Auburn 1st'
'Southeast Missouri - Bottom of 2nd'
'Tennessee - Top of 3rd'
从这些字符串中提取团队名称的最有效方法是什么?
换句话说,我想要的输出如下:
'Tennessee Tech'
'Auburn'
'Southeast Missouri'
'Tennessee'
附注:我不相信有任何团队(为了我的目的)由三个单词组成(例如亚利桑那大学),但是对这个实例也很满意。
我编写的以下代码仅用于删除带数字的元素:
s = 'Auburn 1st'
string = s.split()
for j, word in enumerate(string):
if any(char.isdigit() for char in word):
del string[j]
team = ' '.join(string)
print(team)
答案 0 :(得分:4)
正如您在评论中所说,使用正则表达式来提取数字或短划线之前的所有内容
import re
new_string = re.split("(\s[-\d])", string_here)[0]
其中string_here
是此正则表达式的输入。
*如果在它之前没有空格
,则编辑为不分割连字符