如何在读取文本文件时只获取没有所有标点符号的单词?
How can I obtain only word without All Punctuation Marks when I read text file?
文本文件 abc.txt
是从网上抓取的任意文章。例如:
His name is "Donald" and he likes burger. On December 11, he married.
我想只提取小写和数字的单词,除了上面文章中的各种句点和引号。在上面的例子中:
{his, name, is, Donald, and, he, likes, burger, on, December, 11, he, married}
我的代码如下:
filename = 'abc.txt';
fileID = fopen(filename,'r');
C = textscan(fileID,'%s','delimiter',{',','.',':',';','"','''});
fclose(fileID);
Cstr = C{:};
Cstr = Cstr(~cellfun('isempty',Cstr));
有没有简单的代码可以只提取除所有符号外的字母单词和数字?
要将某些单词转换为小写,需要两个步骤。
regexprep 将字符串开头或句点和空格后面的单词转换为小写。
在regexprep
函数中,我们使用以下模式:
(?<=^|\. )([A-Z])
表示:
(?<=^|\. )
我们要断言在感兴趣的单词之前要么是字符串的开头 (^
),要么是 (|
) 句号 (.
) 后跟空格。这种类型的构造称为 lookbehind.
([A-Z])
这部分表达式匹配并捕获(存储匹配)一个大写字母 (A-Z
).
regex中的${lower([=19=])}
成分称为动态表达式,将捕获组(([A-Z])
)的内容替换为小写。此语法特定于 MATLAB 语言。
您可以检查上述表达式的行为 here。
一旦发生小写转换,regexp 查找所有出现的 一个或多个 数字、小写和大写字母。
模式[a-zA-Z0-9]+
匹配小写字母、大写字母和数字。
您可以检查此正则表达式的行为 here。
text = fileread('abc.txt')
data = {regexp(regexprep(text,'(?<=^|\. )([A-Z])','${lower([=11=])}'),'[a-zA-Z0-9]+','match')'}
>>data{1}
13×1 cell array
{'his' }
{'name' }
{'is' }
{'Donald' }
{'and' }
{'he' }
{'likes' }
{'burger' }
{'on' }
{'December'}
{'11' }
{'he' }
{'married' }
文本文件 abc.txt
是从网上抓取的任意文章。例如:
His name is "Donald" and he likes burger. On December 11, he married.
我想只提取小写和数字的单词,除了上面文章中的各种句点和引号。在上面的例子中:
{his, name, is, Donald, and, he, likes, burger, on, December, 11, he, married}
我的代码如下:
filename = 'abc.txt';
fileID = fopen(filename,'r');
C = textscan(fileID,'%s','delimiter',{',','.',':',';','"','''});
fclose(fileID);
Cstr = C{:};
Cstr = Cstr(~cellfun('isempty',Cstr));
有没有简单的代码可以只提取除所有符号外的字母单词和数字?
要将某些单词转换为小写,需要两个步骤。
regexprep 将字符串开头或句点和空格后面的单词转换为小写。
在regexprep
函数中,我们使用以下模式:
(?<=^|\. )([A-Z])
表示:
(?<=^|\. )
我们要断言在感兴趣的单词之前要么是字符串的开头 (^
),要么是 (|
) 句号 (.
) 后跟空格。这种类型的构造称为 lookbehind.([A-Z])
这部分表达式匹配并捕获(存储匹配)一个大写字母 (A-Z
).
regex中的${lower([=19=])}
成分称为动态表达式,将捕获组(([A-Z])
)的内容替换为小写。此语法特定于 MATLAB 语言。
您可以检查上述表达式的行为 here。
一旦发生小写转换,regexp 查找所有出现的 一个或多个 数字、小写和大写字母。
模式[a-zA-Z0-9]+
匹配小写字母、大写字母和数字。
您可以检查此正则表达式的行为 here。
text = fileread('abc.txt')
data = {regexp(regexprep(text,'(?<=^|\. )([A-Z])','${lower([=11=])}'),'[a-zA-Z0-9]+','match')'}
>>data{1}
13×1 cell array
{'his' }
{'name' }
{'is' }
{'Donald' }
{'and' }
{'he' }
{'likes' }
{'burger' }
{'on' }
{'December'}
{'11' }
{'he' }
{'married' }