我想为熊猫数据框中的格式不一致的数据字段提取位置。 (我不维护数据,因此无法更改此字段的格式。)
运行以下玩具版本
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?
答案 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)
语句中,您可以将if
与find
的结果进行比较。
答案 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)