Akb*_*ein 4 python regex python-3.x
给定一个单词 (x);返回可以在该单词中找到的可能的 n 元语法。您可以根据需要修改n-gram值;它位于 pat 变量的花括号中。默认 n 元语法值为 4。
例如; 对于单词 (x):
x = 'abcdef'
可能的 4-gram 是:
['abcd', 'bcde', 'cdef']
def ngram_finder(x):
pat = r'(?=(\S{4}))'
xx = re.findall(pat, x)
return xx
Run Code Online (Sandbox Code Playgroud)
问题是:如何使用大括号将 f 字符串与正则表达式中的 r 字符串组合起来。
您可以使用此字符串将值组合n到正则表达式中,并使用双大括号在输出中创建单个值:
fr'(?=(\S{{{n}}}))'
Run Code Online (Sandbox Code Playgroud)
正则表达式需要{}创建一个量词(正如您在原始 regex 中所做的那样{4})。但是,f字符串用于{}指示表达式替换,因此您需要“转义” {}f 字符串中正则表达式所需的内容。这是通过使用{{and}}在输出中创建{and来完成的}。所以{{{n}}}( 其中n=4) 生成'{' + '4' + '}' = '{4}' )按要求
完整代码:
import re
def ngram_finder(x, n):
pat = fr'(?=(\S{{{n}}}))'
return re.findall(pat, x)
x = 'abcdef'
print(ngram_finder(x, 4))
print(ngram_finder(x, 5))
Run Code Online (Sandbox Code Playgroud)
输出:
['abcd', 'bcde', 'cdef']
['abcde', 'bcdef']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3915 次 |
| 最近记录: |