仅从字符串中提取某些单词并忽略带有数字的单词等

时间:2017-06-23 21:12:05

标签: python string

我已经考虑了一段时间了,但还没有提出一个有效的解决方案,不使用一系列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)

1 个答案:

答案 0 :(得分:4)

正如您在评论中所说,使用正则表达式来提取数字或短划线之前的所有内容

import re
new_string = re.split("(\s[-\d])", string_here)[0]

其中string_here是此正则表达式的输入。

*如果在它之前没有空格

,则编辑为不分割连字符