Python Elif无法按预期方式进行字符串查找

时间:2019-11-20 07:02:48

标签: python if-statement

我想为熊猫数据框中的格式不一致的数据字段提取位置。 (我不维护数据,因此无法更改此字段的格式。)

运行以下玩具版本

string2 = 'Denver.John'
if string2.find(' -'):
    string2 = string2.split(' -')[0]
elif string2.find('.'):
    string2 = string2.split('.')[0]
print(string2)

给我丹佛约翰而不是丹佛。但是,如果我使用if代替:

string2 = 'Denver.John'
if string2.find(' -'):
    string2 = string2.split(' -')[0]
if string2.find('.'):
    string2 = string2.split('.')[0]
print(string2)

根据需要我得到了丹佛。问题是我也有类似'Las.Vegas-Rudy'的字符串,并且我希望能够在这些情况下提取Las.Vegas,因此,如果字段不包含连字符('- ')。

为什么Elif不适合Denver.John?

4 个答案:

答案 0 :(得分:2)

由于find-1有效时会产生索引或-1,所以请尝试使用:

string2 = 'Denver.John'
if string2.find(' -') + 1:
    string2 = string2.split(' -')[0]
elif string2.find('.') + 1:
    string2 = string2.split('.')[0]
print(string2)

或更像是:

string2 = 'Denver.John'
if ' -' in string2:
    string2 = string2.split(' -')[0]
elif '.' in string2:
    string2 = string2.split('.')[0]
print(string2)

答案 1 :(得分:1)

使用

build.gradle

相反。 find方法返回一个int

答案 2 :(得分:1)

Route::get('gallery', 'GalleryController@index'); Route::post('gallery/saveImage', 'GalleryController@saveImage'); Route::get('gallery/getFiles', 'GalleryController@getFiles'); Route::post('gallery/deleteFile', 'GalleryController@deleteFile'); 返回在给定字符串中找到的子字符串的最低索引。如果找不到,则返回-1。

所以在您的情况下:

find()

因此,在您的string2 = 'Denver.John' print(string2.find(' -')) # prints -1 print(string2.find('.')) # prints 6 if string2.find(' -'): string2 = string2.split(' -')[0] elif string2.find('.'): string2 = string2.split('.')[0] print(string2) 语句中,您可以将iffind的结果进行比较。

答案 3 :(得分:1)

string.find返回子字符串的位置,如果找不到子字符串,则为-1。

因此,请执行以下操作:

string2 = 'Denver.John'
if string2.find(' -') >= 0:
    string2 = string2.split(' -')[0]
elif string2.find('.') >= 0:
    string2 = string2.split('.')[0]
print(string2)