我有一个字符串:
"Hi, hi Jane! I'm so. So glad to to finally be able to write - WRITE!! - to you!"
我需要计算一对重复的单词。
def repetitionEncryption(letter):
pattern = ???
regex = re.compile(???)
return len(re.findall(regex, letter))
感谢您的关注。
答案 0 :(得分:1)
请注意,问题已被社区标记为重复(但问题不正确)。我改变它以反映正确的。
有一个类似的question用JavaScript标记,但需要对python进行一些修改。
import re
text = "Hi, hi Jane! I'm so. So glad to to finally be able to write - WRITE!! - to you!"
repeats = re.findall(r'\b(\w+)\b(?=.*\b\1\b)', text, re.I)
print(repeats)
['Hi', 'so', 'to', 'to', 'to', 'write']
repeats = list(map(str.lower, repeats))
现在,创建一个计数器。
from collections import Counter
c = Counter(repeats)
print(c)
Counter({'Hi': 1, 'so': 1, 'to': 3, 'write': 1})
或者,更原始:
r_set = set(repeats)
c = {w : repeats.count(w) for w in r_set}
print(c)
{'hi': 1, 'so': 1, 'to': 3, 'write': 1}
键的值是重复次数。如果'Hi'
的值为1,则表示'Hi'
发生了两次。等等。
正则表达式是
\b(\w+)\b(?=.*\b\1\b)
详情
\b
- 字边界(\w+)
- 抓取一个单词组\b
- 字边界(?=.*\b\1\b)
- 前瞻,由...组成
.*
任何\b\1\b
在第一组中捕获的同一个词。在此,\1
是对第一组的引用。答案 1 :(得分:0)
一个建议是将句子分成数组并比较数组中的每个项目。你不会使用正则表达式。使用正则表达式,您需要提前了解您正在寻找的内容。假设您想知道“简”在句子中的次数。