我正在做作业,并且正在尝试为以下提到的问题编写代码。
编写一个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
答案 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)