我对python相当陌生。在代码中,我读取了一个文本文件作为输入,并将该文本文件上的每一行readen作为元素放入一个列表中。在
我正在尝试使用RegEx编写代码来查找和打印复数单词。在土耳其语中,复数是'-ler'或'-lar'后缀。在
我的代码如下:
import re
f = open('C:/Users/ENE/Desktop/CSE & Kodlar/nlp/utf8textfile.txt', encoding='utf-8-sig', errors='ignore')
with f as file:
list = file.readlines()
list = [x.strip() for x in list]
print(list)
total = 0
for i in list:
total += len(i)
ave_size = float(total) / float(len(list))
print("Average word length = " + str(ave_size))
#p = re.compile('.*l[ae]r.*')
for element in list:
m = re.findall(".*l[ae]r.*", element)
if m:
print(m)
其输出为
list=['Aliler geldiler','Selam olsun sana','Merhabalar','Java kitabınerede']
for循环: ['Aliler geldiler'] ['Merhabalar']
我试着逐字打印,比如['Aliler'],['geldiler']和['Merhabalar']。我该怎么做?在
.*
匹配所有内容(除了行结束符)。在这意味着如果},则它将生成整个输入,否则将不匹配任何内容。在
.*l[ae]r.*
包含lar
或{你要匹配单词,而不是整行。在
由于单词必须以
l[ae]r
结尾,因此需要确保r
是该单词的结尾。这可以使用\b
(单词边界)来完成。在由于单词必须以
l[ae]r
结尾,因此它必须以1个或多个(+
)个单词字符作为前缀,即\w
。在现在,} 和^{} )。还要注意,
\w
只匹配ASCII字母(A-Z),因此您需要启用Unicode模式,以便它匹配所有字母(例如^{\w
匹配数字(0-9)和下划线(U),但这通常是可以的。在所以,你的正则表达式应该是:
演示请参见regex101.com。在
您可以使用}结尾的所有单词:
\w*l[ea]r\b
正则表达式查找以lar
或{参见regex demo。在Python3.x中,
\b
单词边界默认是Unicode感知的,在Python2.x中,我建议添加re.U
标志。在在这里,
s
可以是整行,甚至是整个文档。在详细信息
\w*
-0+个字母、数字和_
(在python3.x中,它将匹配所有Unicode字母、数字或_
,您可以使用[^\W\d_]*
来只匹配字母)l
-一个l
字母[ea]
-e
或{r
-一个r
字母\b
-一个单词边界(注意r'..'
符号用于避免双重转义\b
使引擎将其解析为单词边界)。在您可以通过以下方式实现您想要的:
这将输出:
^{pr2}$相关问题 更多 >
编程相关推荐