0

我怎样才能使这个 if 语句更有效?

        if ',' in my_string:
            my_string = my_string.split(',', 1)[0]
            return ', '
        elif '.' in my_string:
            my_string = my_string.split('.', 1)[0]
            return '. '
        elif '?' in my_string:
            my_string = my_string.split('?', 1)[0]
            return '? '
        elif '!' in my_string:
            my_string = my_string.split('!', 1)[0]
            return '! '
        elif ';' in my_string:
            my_string = my_string.split(';', 1)[0]
            return '; '
        else:    
            self.qstring = my_string
            return None

我可以列出如下列表:

my_list = [',', '.', '?', '!', ';'] 

并循环通过,但如果我把它全部放在一个循环中,我不确定如何仍然使用 else 语句。有什么想法吗?

4

3 回答 3

2

遍历您拥有的列表:

for delim in my_list:
    if delim in my_string:
        my_string = my_string.split(delim, 1)[0]
        return delim + ' '

self.qstring = my_string
return None

因为如果任何分隔符匹配,则循环将不执行循环之后return的部分。

于 2013-09-06T14:59:12.810 回答
1

使用re

import re

(mystring, delim) = re.split(r'([,\.\?;] )', mystring, 1)[:2]
return delim
于 2013-09-06T15:03:15.267 回答
0

删除对 的所有分配my_string。由于这是一个局部变量,因此没有任何效果,因为该值永远不会返回。

于 2013-09-06T15:00:21.917 回答