我已经从一个字符串创建了所有子字符串,现在我想将所有以'aeiou' 开头的子字符串存储到一个空列表中。你能检查错误吗?

Posted

技术标签:

【中文标题】我已经从一个字符串创建了所有子字符串,现在我想将所有以\'aeiou\' 开头的子字符串存储到一个空列表中。你能检查错误吗?【英文标题】:I have created all substrings from a string , now I want to store all sub strings that start with'aeiou' into an empty list . can you check error?我已经从一个字符串创建了所有子字符串,现在我想将所有以'aeiou' 开头的子字符串存储到一个空列表中。你能检查错误吗? 【发布时间】:2020-08-24 19:40:04 【问题描述】:
string ='shivraj'
i=0
j=0
a=[]                                      //storing the sub strings into empty list
for i in range(len(string)):               //for loop to create sub strings 
    for j in range(i,len(string)):               
        a.append((string[i:j+1]))
        j=j+1
    i=i+1
s=[]                          //empty list to store sub strings starting with vowel
k=0
l=0
for x in range(0,len(a)):               //loop to run for entire sub string list
    if a[k][l] in 'aeiou':              // [l] to extract first letter of sub string and match it 
       s.append(a[k])                      with 'aeiou' and store it in s=[] if matched.       
       k=k+1                            // to increment for next index values

运行 enire 代码后,我的输出是一个空列表 (s=[]),您能帮我解决错误吗?

【问题讨论】:

你没有增加 l [l] 用于提取子字符串的第一个值,因此我将其保留为 l=0 ,每次循环运行时 你能添加预期的输出吗 预期的输出应该是以元音'aeiou'开头的字符串列表,我非常努力地在代码中找到错误但无法找到,仅供参考,首先我的代码给你一个列表所有子字符串,然后我想有一个单独的列表,我只看到以元音开头的子字符串并且我无法做到,我的意思是错误在代码的最后几行 请edit您的帖子包含您对问题的任何其他信息。避免在 cmets 中添加它,因为它们更难阅读并且更容易删除。帖子的编辑按钮就在帖子标签的下方。 【参考方案1】:

您的代码中的问题是 k 只有在条件为 True 时才会增加。您只需将 k = k+1 移出 if 语句即可。 改变这个

for x in range(0,len(a)):               
    if a[k][l] in 'aeou':              
       t.append(a[k])                     
        k=k+1     

这个

for x in range(0,len(a)):               
    if a[k][l] in 'aeou':              
       t.append(a[k])                     
    k=k+1 

使用列表理解的简单解决方案

string ='shivraj'
a = [string[i: j + 1] for i in range(len(string)) for j in range(i, len(string))]                                      
vowels = 'aeiou' 
s = [x for x in a if x.startswith(tuple(vowels))]

输出:

['i', 'iv', 'ivr', 'ivra', 'ivraj', 'a', 'aj']

【讨论】:

感谢您的回答,但我真的很想知道我的代码中的错误,如果您能帮助我,这对我来说将是一个学习。 @VarishTripathi 我已经添加了为什么你的代码不工作的解释

以上是关于我已经从一个字符串创建了所有子字符串,现在我想将所有以'aeiou' 开头的子字符串存储到一个空列表中。你能检查错误吗?的主要内容,如果未能解决你的问题,请参考以下文章

我已经从 html 创建了 pdf 现在我想将此 pdf 上传到 cloudinary 或我们的服务器而不将其保存到客户端 PC

从 pandas DataFrame 中的多个字符串列中删除子字符串

如果 Pandas DataFrame 不包含某些子字符串

从其他 PDF 创建多页 PDF

有没有办法从 ASC 文件中逐行读取并在特定子字符串后检查它?

创建进程的多个子进程并维护其所有 PID 的共享数组