使用Perl删除包含非英语字符的行
鉴于这些数据使用Perl删除包含非英语字符的行,perl,non-english,Perl,Non English,鉴于这些数据 TRMMJJH12903CF8B69<SEP>SOKSZAQ12AC9070DC0<SEP>Alexandre Da Costa<SEP>Violin Concerto No.1 in G minor_ Op.26 - III. Allegro energico TRMMOWW128F1465642<SEP>SOGELZG12A6D4F865F<SEP>Yann Tiersen<SEP>La Valse D'
TRMMJJH12903CF8B69<SEP>SOKSZAQ12AC9070DC0<SEP>Alexandre Da Costa<SEP>Violin Concerto No.1 in G minor_ Op.26 - III. Allegro energico
TRMMOWW128F1465642<SEP>SOGELZG12A6D4F865F<SEP>Yann Tiersen<SEP>La Valse D'Amélie (Version Orchestre)
输出如下所示:
violin concerto no
la valse d
第二行不应该出现。这是一种效率极低的做事方式!你只是想把歌曲名称从上面的例子中分离出来吗?具体来说,你想达到什么目的?第二行是什么?如果它有一个非英语字符,我试图完全删除这一行。我知道这是无效的,这只是我尝试的第一件事,我只是不断补充。“第二行”是la valse d。这一行应该完全没有问题。您显示的Perl代码删除了很多标点符号。是这样吗?你说你想“删除一行完全如果它有一个非英语字符”。这意味着在示例数据中没有任何内容可以保留,因为第一行包含一个句号,第二行包含一个撇号。另外,文本记录之间真的有一条空行吗?你必须准确地展示你正在处理的事情。这是一种效率极低的做事方式!你只是想把歌曲名称从上面的例子中分离出来吗?具体来说,你想达到什么目的?第二行是什么?如果它有一个非英语字符,我试图完全删除这一行。我知道这是无效的,这只是我尝试的第一件事,我只是不断补充。“第二行”是la valse d。这一行应该完全没有问题。您显示的Perl代码删除了很多标点符号。是这样吗?你说你想“删除一行完全如果它有一个非英语字符”。这意味着在示例数据中没有任何内容可以保留,因为第一行包含一个句号,第二行包含一个撇号。另外,文本记录之间真的有一条空行吗?你必须清楚地表明你在处理什么。
use strict;
use warnings;
my @data = ('TRMMJJH12903CF8B69<SEP>SOKSZAQ12AC9070DC0<SEP>Alexandre Da Costa<SEP>Violin Concerto No.1 in G minor_ Op.26 - III. Allegro energico', 'TRMMOWW128F1465642<SEP>SOGELZG12A6D4F865F<SEP>Yann Tiersen<SEP>La Valse D\'Amélie');
foreach (@data){
my @split = split(/<SEP>/);
print "$split[3]\n" unless /[^[:ascii:]]/;
}
use strict;
use warnings;
my @data = ('TRMMJJH12903CF8B69<SEP>SOKSZAQ12AC9070DC0<SEP>Alexandre Da Costa<SEP>Violin Concerto No.1 in G minor_ Op.26 - III. Allegro energico', 'TRMMOWW128F1465642<SEP>SOGELZG12A6D4F865F<SEP>Yann Tiersen<SEP>La Valse D\'Amélie');
foreach (@data){
my @split = split(/<SEP>/);
print "$split[3]\n" unless /[^[:ascii:]]/;
}
Violin Concerto No.1 in G minor_ Op.26 - III. Allegro energico