Python代码可查找字符串中最短单词的总数。

时间:2018-12-09 13:32:38

标签: python

我正在做作业,并且正在尝试为以下提到的问题编写代码。

编写一个python脚本,该脚本读取类型文本,分析该文本包含多少个单词,并打印单词的总数以及三个或更少字母的“短”单词的数量。

给定的字符串是:“戏剧是我要抓住国王良知的东西。”

这个问题有一个小技巧。一个人不能使用 split()函数,因为它将“ I'll”视为一个单词,但是赋值要求我们将其视为两个不同的单词,因此给出的输出表明该字符串具有14个字。

涉及“简短单词”。它应再次将“ I'll”视为两个单独的短词,并应给出一个输出,显示字符串具有8个短词,即[“ The”,“ s”,“ the”,“ I”,“ ll” ,“ the”,“ of”,“ the”]。

非常感谢,如果您可以共享此问题的代码,我将非常感谢。

string= input("Enter string:")
word=1
y = 0
char = 0 
for i in string:
    if(i == ' ' or i == "'"):
        word = word+1
    for x in i:
        if len(x) <= 3:
           y = y+1

print("Number of words in the string:")
print(word)
print (y)

这是我的代码,输出如下:

Number of words in the string:
16
69

5 个答案:

答案 0 :(得分:1)

您可以使用Vec分割多个定界符:

IntoIterator

答案 1 :(得分:0)

您可以先将“'”替换为“”,然后再对结果字符串调用split。

>>> s = "The play's the thing wherein I'll catch the conscience of the king."
>>> s = s.replace("'", " ")
>>> s = s.split()
>>> len(s)
14
>>> s
['The', 'play', 's', 'the', 'thing', 'wherein', 'I', 'll', 'catch', 'the', 'conscience', 'of', 'the', 'king.']

答案 2 :(得分:0)

x = "The play 's the thing wherein I'll catch the conscience of the king."
x = x.replace("'", " ")
x = x.split()
# Find all the words that have length less than 3
ans = [i for i in x if len(i) <= 3]
print("Total number of words {}, short words{}".format(len(x), len(ans)))

答案 3 :(得分:0)

具有re.split功能:

import re

input_string = input("Enter string:")  # for ex. "He is a good-hearted person, too"
words = re.findall(r"\w+(?:-\w+)?", input_string)

print("Total number of words:", len(words))
print("Number of 'short' words:", len([w for w in words if len(w) <= 3]))

输出:

Total number of words: 6
Number of 'short' words: 4

答案 4 :(得分:0)

您可以将所有字符'更改为空格。然后不带任何参数的split()返回所有单词的列表。

string= input("Enter string:")
word=0
y = 0

for i in range(len(string)):
    if string[i] == "\'":
        string[i] = ' '
for i in string.split():
    word += 1
    if len(i) <= 3:
        y += 1

print("Number of words in the string:")
print(word)
print (y)