Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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 string.标点符号无法从字符串中删除某些字符_Python - Fatal编程技术网

Python string.标点符号无法从字符串中删除某些字符

Python string.标点符号无法从字符串中删除某些字符,python,Python,我的目标是删除字符串中的所有标点符号,这样我就可以得到字符串中每个单词的频率 我的字符串是: 华盛顿在数百万观众面前实现了这一点 在他的节目播出期间,一位惊恐的塔克·卡尔森说, “我……我是主流媒体”周三,他开始现场直播 空气“我们发现了选民欺诈猖獗的证据,而 总统完全有权要求进行调查,即使 主流媒体认为……”卡尔森说,他拖着脚步往下看 听到他颤抖的手,他感到自己的耳朵突然响了起来 回过头来,盯着周围的摄制组。 “媒体说……等等。那些电视上的骗子会试图告诉你……哦,上帝。 我们是有线电视新闻的头

我的目标是删除字符串中的所有标点符号,这样我就可以得到字符串中每个单词的频率

我的字符串是:

华盛顿在数百万观众面前实现了这一点 在他的节目播出期间,一位惊恐的塔克·卡尔森说, “我……我是主流媒体”周三,他开始现场直播 空气“我们发现了选民欺诈猖獗的证据,而 总统完全有权要求进行调查,即使 主流媒体认为……”卡尔森说,他拖着脚步往下看 听到他颤抖的手,他感到自己的耳朵突然响了起来 回过头来,盯着周围的摄制组。 “媒体说……等等。那些电视上的骗子会试图告诉你……哦,上帝。 我们是有线电视新闻的头号节目,不是吗?福克斯新闻…福克斯 新闻。是媒体。是我。这不可能。不,不,不,不,不,天哪 天哪,我一年挣600万美元。把照相机从我身上拿开!” 当时,卡尔森从翻领上扯下话筒,逃离了现场 惊慌失措

资料来源:

我想删除它的所有标点符号。我是这样做的-

s、 translatest.maketrans,string.标点符号

这是输出-

华盛顿在数百万观众面前实现了这一点 在他的节目播出期间,一位惊恐的塔克·卡尔森说 “我……我是主流媒体”周三,他开始现场直播 “我们发现了猖獗的选民欺诈和 总统完全有权要求进行调查,即使 主流媒体认为,“落后的卡尔森低头盯着我说 他颤抖的双手,在他看的时候突然感到耳鸣 后退,瞄准他周围的摄制组 媒体说……等等,电视上的骗子会告诉你……哦,天哪,我们在撒谎 有线电视新闻的numberone节目不是我们福克斯新闻吗…福克斯新闻是 媒体是我,这不可能不不不不不,天哪,我做6 “一年一百万把相机从我身上拿开”在Carlson撕破的新闻发布会上 他从翻领上取下麦克风,惊慌失措地逃离现场

正如您所看到的,字符/字符串类似于,-和。。。仍然存在。我是否错误地期望它们也被删除?如果输出是正确的,那么我怎么能不区分'News'和News?

>导入字符串 >>>“用字符串。标点符号 错误的 >>>-在字符串中。标点符号 错误的 欢迎来到美妙的Unicode世界,在这里,除其他许多事情外,…不是三个串联的句号,而是:

>>> import unicodedata
>>> unicodedata.name('—')
'EM DASH'
不是连字符

您希望如何处理整个Unicode表中的“标点符号”可能不属于这个问题的范围,但您可以提出自己的临时列表,或者使用专为这种文本处理类型设计的第三方库。以下是一种方法:

>>>导入字符串 >>>“用字符串。标点符号 错误的 >>>-在字符串中。标点符号 错误的 欢迎来到美妙的Unicode世界,在这里,除其他许多事情外,…不是三个串联的句号,而是:

>>> import unicodedata
>>> unicodedata.name('—')
'EM DASH'
不是连字符

您希望如何处理整个Unicode表中的“标点符号”可能不属于这个问题的范围,但您可以提出自己的临时列表,或者使用专为这种文本处理类型设计的第三方库。以下是一种方法:


我添加了可以使用实现从字符串中删除的字符列表

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

我添加了可以使用实现从字符串中删除的字符列表

>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
看起来…和其他几个您遇到问题的字符是特殊的Unicode字符。解决方法是使用string.isalpha,它告诉您字符串中的字符是否是字母表的一部分

result = ""
for x in string:
    if x.isalpha() or x == " ":
        result = result + x
看起来…和其他几个您遇到问题的字符是特殊的Unicode字符。解决方法是使用string.isalpha,它告诉您字符串中的字符是否是字母表的一部分

result = ""
for x in string:
    if x.isalpha() or x == " ":
        result = result + x

我会说是的,您错误地期望非ASCII匹配ASCII。这不起作用,因为…在您的示例中,不是三个ASCII句点-它是一个unicode椭圆字符,在string.标点符号中不存在。您认为是纯标点符号的所有其他字符也是如此。我会说是的,您错误地期望非aSCII匹配ASCII。这不起作用,因为…在您的示例中,不是三个ASCII句点-它是一个unicode椭圆字符,它不存在于string.标点符号中。对于所有其他您认为是纯标点符号的字符也是如此。对于像we's或Number这样的单词呢?它还将删除它们。对于像we's或Number这样的单词呢我们是谁?还是数字?它也会删除 那些