使用分割函数后如何遍历字符串

时间:2018-12-27 11:04:00

标签: python pandas data-analysis data-cleaning

这是字符串 ds ='Java;蟒蛇;红宝石; SQL' 我已经使用滑动功能来分割每种语言,并发现一种语言的数量。 如果我想查找字符串中是否包含2种语言,则返回零。 示例:在上述变量中​​,由于同时存在java和python,因此必须将count返回为1。

def language_both_jp(y):
    count = 0
    prog = (y.split(";"))
    for i in range(0,len(prog)):
        if(prog[i] == 'Java'):
            for i in range(0,len(prog)):
                if(prog[i] == 'Python'):
                    count += 1
    return count

3 个答案:

答案 0 :(得分:3)

您可以这样做,而不要使用dictionary来存储每种语言的计数:

ds = 'Java; Python; Ruby; SQL'

counts = {}
for chunk in ds.split(';'):
    language = chunk.strip()
    counts[language] = counts.get(language, 0) + 1

print(counts)

输出

{'Java': 1, 'SQL': 1, 'Python': 1, 'Ruby': 1}

另一种 pythonic 方法将是使用collections.Counter

from collections import Counter

ds = 'Java; Python; Ruby; SQL'
counts = Counter(language.strip() for language in ds.split(';'))
print(counts)

输出

Counter({'Java': 1, 'Ruby': 1, 'Python': 1, 'SQL': 1})

一旦您拥有一个具有每种语言计数的类似映射的对象,就遍历键,值对并输出计数大于1的对象,例如:

from collections import Counter

ds = 'Java; Python; Ruby; SQL; Python'
counts = Counter(language.strip() for language in ds.split(';'))

for language, count in counts.items():
    if count > 1:
        print(language, count)

输出

Python 2

请注意,以上示例中的输入字符串已进行了少许修改,以包含两次Python。

答案 1 :(得分:1)

问题是您应该被"; "分割,因此您应该:

def language_both_jp(y):
    count = 0
    prog = (y.split("; "))
    for i in range(0,len(prog)):
        if(prog[i] == 'Java'):
            for i in range(0,len(prog)):
                if(prog[i] == 'Python'):
                    count += 1
    return count

language_both_jp(ds)
#1

一种更简单的方法是:

def language_both_jp(x, l):
    return 1 if [i for i in ds.split("; ") if i in l] else 0

language_both_jp(ds, ['Python','Java'])
#1

答案 2 :(得分:0)

您的要求不是很容易理解... 但是,请尝试以下解决方案...

i。如果您want to find the count of occurrence的{​​{1}}仅将字符串和word作为参数传递。

尝试下面的代码...

word

它将打印单词出现的次数

def language_both_jp(y, word): count = 0 prog = (y.split(";")) for i in range(0,len(prog)): if(prog[i] == word): count += 1 return count string = 'java;python;java;python;c;python' print(language_both_jp(string, 'java')) 。如果您想罚款两个单词的出现。.

尝试下面的代码。

ii

def language_both_jp(y, word1,word2): count1 = 0 count2 = 0 prog = (y.split(";")) for i in range(0,len(prog)): if(prog[i] == word1): count1 += 1 if(prog[i] == word2): count2 += 1 return 'occurrence of '+word1+'='+str(count1)+'\n'+'occurrence of '+word2+'='+str(count2) args = 'java;python;java;python;c;python' print(language_both_jp(args, 'java','python')) 。如果您想查找任何两个单词的存在...

尝试以下代码

iii

请问您是否有任何疑问...