Python 根据标点符号标记字符串
我在尝试用标点符号拆分字符串时遇到了一些问题。特别是属于string.标点符号的每个字符。例如字符串 输入:Python 根据标点符号标记字符串,python,regex,string,Python,Regex,String,我在尝试用标点符号拆分字符串时遇到了一些问题。特别是属于string.标点符号的每个字符。例如字符串 输入: "Hi. How2 are you doing?? " 我希望输出: ['Hi', '.', 'How2', 'are', 'you', 'doing', '?', '?') ['hi', '. ', 'how', ' ', 'are', ' ', 'you', ' ', 'doing', '??'] 对于引用字符串。标点符号为: '!"#$%&\'()*+,-.
"Hi. How2 are you doing?? "
我希望输出:
['Hi', '.', 'How2', 'are', 'you', 'doing', '?', '?')
['hi', '. ', 'how', ' ', 'are', ' ', 'you', ' ', 'doing', '??']
对于引用字符串。标点符号为:
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
它给出了输出:
['Hi', '.', 'How2', 'are', 'you', 'doing', '?', '?')
['hi', '. ', 'how', ' ', 'are', ' ', 'you', ' ', 'doing', '??']
此外,两个“??”
应该分开。有什么建议吗 您可以使用:
上面的模式查找所有出现的,?
,或一个或多个单词字符序列。为了演示,我保持了模式的简单性,但是您想要捕获的任何其他标点符号都将放置在字符集[…]
中
此外,您可能希望使用而不是键入所有这些标点符号 对于这个存在:
我使用了一个小功能,nltk是巨大的和强大的,看看它有点晚了
您应该能够使用split()完成此操作
你所做的一切都是使用空格,所以其他一切都在字符之间
示例:\s+|\b|(?=\pP)
将拆分(并使用)空格或单词边界,
或标点符号(在“展望”中)
不需要使用Python进行测试,而是使用Perl
$data =~ s/^\s+//; # <- trim leading spaces (a Perl problem)
my @vals = split /\s+|\b|(?=\pP)/, $data;
但在列表中有标点符号
请注意,相反的方法是查找所有单词和标点符号。对于每个拆分,都有
是否定的“全部查找…”注意,NLTK是第三方库。它在Python的标准版本中不可用。是的,它是第三方库,但它的存在是为了一个目的。对不起,我忘了在我不想使用的问题中提到它NLTK@user3750474没关系,然后检查iCodez Ans只是一个小评论,你不需要说[i for i in re.split(…)如果我]。。。“如果我”是完全多余的,如果你真的不能说print(关于split(…))
$data =~ s/^\s+//; # <- trim leading spaces (a Perl problem)
my @vals = split /\s+|\b|(?=\pP)/, $data;
\s+|\b|(?=[!"#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~])