Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-在字符串中计数和拆分/剥离单词_Python_Split_Counting_Strip_Word Count - Fatal编程技术网

Python-在字符串中计数和拆分/剥离单词

Python-在字符串中计数和拆分/剥离单词,python,split,counting,strip,word-count,Python,Split,Counting,Strip,Word Count,下面的python代码将“rest-place”读作一个单词。 修改后的列表显示为:[“这”、“是”、“我的”、“休息地”。] 我希望它显示为:[“这”、“是”、“我的”、“休息”、“地方”] 因此,在修改后的列表中,总共给了我5个单词,而不是4个单词 original = 'This is my resting-place.' modified = original.split() print(modified) numWords = 0 for word in modified:

下面的python代码将“rest-place”读作一个单词。
修改后的列表显示为:[“这”、“是”、“我的”、“休息地”。]
我希望它显示为:[“这”、“是”、“我的”、“休息”、“地方”]

因此,在修改后的列表中,总共给了我5个单词,而不是4个单词

original = 'This is my resting-place.'
modified = original.split()
print(modified)

numWords = 0
for word in modified:
    numWords += 1

print ('Total words are:', numWords)
输出为:

Total words are: 4
我希望输出有5个字。

您可以使用正则表达式:

import re
original = 'This is my resting-place.'
print(re.split("\s+|-", original))
输出:

['This', 'is', 'my', 'resting', 'place.']

我想你会在本文中找到你想要的,在这里你可以找到如何创建一个函数,你可以传递多个参数来分割一个字符串,在你的情况下,你可以分割额外的字符

下面是一个最终结果的示例

>>> s = 'thing1,thing2/thing3-thing4'
>>> tsplit(s, (',', '/', '-'))
>>> ['thing1', 'thing2', 'thing3', 'thing4']

要使用
-
将句子中的单词数分隔为两个而不进行拆分,请执行以下操作:

>>> original = 'This is my resting-place.'
>>> sum(map(original.strip().count, [' ','-'])) + 1
5
代码如下:

s='This is my resting-place.'
len(s.split(" "))

4

如果这是您想要的,那么也可以在
'-'
处拆分
numWords=sum(len(word.split('-'))表示word in modified)
@mij contd来自上面的注释:因此,我想删除“-”,并将rest-place读为两个单词,而不是一个。是的,字符串中这些单词之间没有空格,但这无关紧要。这个问题的最上面的答案删除了字符串中的空格和标点符号,只给出单词,而不管每个单词之间有多少个。使用字符串中该问题的答案,
re.findall(r“[\w']+”,original)
给出了
['This','is','my','rest','place']
。为您提供了一个优雅、有效的解决方案!您确实更改了解决方案以匹配被复制者的…为什么不干脆
re.split('\W+',original)
?然后过滤
None
。“\s+|-”和“\W+”之间的区别是什么?我希望rest-place被理解为两个单词。因此,计数应该是5个单词,而不是4个。这不会给出准确的答案,因为您每次都要添加一个单词。如果字符串中有更多的连字符单词,则答案可能不正确。此解决方案不适用于具有多个连字符对的字符串可能性。@SamVitare,请给出一个失败场景的示例。您好,我为我的错误道歉,当我更改原始设置=“这是我的休息地peter pan.”时,我不知道为什么我的答案是6而不是7。但是我又跑进去了,我得到了正确的答案。我一定是打错了什么东西。对于这个输入,我的代码输出7(有7个字)。不用担心。事实上,你在一年后回来标记一个被接受的答案是很好的。因此,我非常感谢您。:)