Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据标点符号标记字符串_Python_Regex_String - Fatal编程技术网

Python 根据标点符号标记字符串

Python 根据标点符号标记字符串,python,regex,string,Python,Regex,String,我在尝试用标点符号拆分字符串时遇到了一些问题。特别是属于string.标点符号的每个字符。例如字符串 输入: "Hi. How2 are you doing?? " 我希望输出: ['Hi', '.', 'How2', 'are', 'you', 'doing', '?', '?') ['hi', '. ', 'how', ' ', 'are', ' ', 'you', ' ', 'doing', '??'] 对于引用字符串。标点符号为: '!"#$%&\'()*+,-.

我在尝试用标点符号拆分字符串时遇到了一些问题。特别是属于string.标点符号的每个字符。例如字符串

输入:

"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|(?=[!"#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~])