如果元音连续出现,则从字符串中删除元音的功能不起作用

时间:2017-08-29 15:25:02

标签: python string python-3.x

> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] graphics  grDevices utils     datasets  stats     methods   base     

other attached packages:
 [1] lubridate_1.6.0               bindrcpp_0.2                  mFilter_0.1-3                
 [4] ggrepel_0.6.5                 reshape2_1.4.2                scales_0.4.1                 
 [7] purrr_0.2.3                   readr_1.1.1                   tidyr_0.7.0                  
[10] tibble_1.3.4                  tidyverse_1.1.1               knitr_1.17                   
[13] Rblpapi_0.3.6                 stringr_1.2.0                 rvest_0.3.2                  
[16] xml2_1.1.1                    devtools_1.13.3               dplyr_0.7.2                  
[19] plyr_1.8.4                    ggplot2_2.2.1                 PerformanceAnalytics_1.4.3541
[22] xts_0.10-0                    zoo_1.8-0                    

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.12       lattice_0.20-35    assertthat_0.2.0   rprojroot_1.2      digest_0.6.12     
 [6] psych_1.7.5        R6_2.2.2           cellranger_1.1.0   backports_1.1.0    evaluate_0.10.1   
[11] httr_1.3.1         highr_0.6          rlang_0.1.2        curl_2.8.1         lazyeval_0.2.0    
[16] readxl_1.0.0       TTR_0.23-2         tidyquant_0.5.3    rmarkdown_1.6      labeling_0.3      
[21] foreign_0.8-67     munsell_0.4.3      broom_0.4.2        compiler_3.4.0     modelr_0.1.1      
[26] pkgconfig_2.0.1    base64enc_0.1-3    mnormt_1.5-5       htmltools_0.3.6    tidyselect_0.1.1  
[31] withr_2.0.0        Quandl_2.8.0       grid_3.4.0         nlme_3.1-131       jsonlite_1.5      
[36] gtable_0.2.0       magrittr_1.5       quantmod_0.4-10    stringi_1.1.5      RColorBrewer_1.1-2
[41] tools_3.4.0        forcats_0.2.0      glue_1.1.1         hms_0.3            rsconnect_0.8.5   
[46] parallel_3.4.0     yaml_2.1.14        colorspace_1.3-2   memoise_1.1.0      bindr_0.1         
[51] haven_1.1.0       
>

该函数应该删除所有元音,如果输入是:

def disemvowel(string):
    vowels = ('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')
    listString = list(string)
    for t in listString:
        if t in vowels:
            listString.remove(t)
    string = ''.join(listString)
    return string

正确的输出应该是:

'This website is for losers LOL!' 

但是当我改变输入以使元音相互连续出现时,即

'Ths wbst s fr lsrs LL!' 

输出变为

'This websitea is for loosers LOL!' 

不正确(请参阅'Ths wbsta s fr losrs LL!' 'wbsta')。

2 个答案:

答案 0 :(得分:4)

为什么不从元音字符构造字符串而不是删除元音呢?

return ''.join([c for c in string if c not in vowels])

答案 1 :(得分:1)

从您正在迭代的事物中删除项目通常不是一个好主意,因为这会在迭代期间产生影响。因此,不要从字符串中删除元音的字符,而是将不是元音的字符添加到新字符串中。

def disemvowel(string):
    vowels = ('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')
    listString = list(string)
    string = ""
    for t in listString
        if t not in listString
            string += t

    return string