如何在Python中分隔字符串中的标点符号?

时间:2013-03-07 23:46:12

标签: python regex

我基本上是从文件中解析数据。在我的代码中的某个时刻,我根据空格字符分割文件的每一行 - > str.split(“”)。我需要的是一种分离字符串中可能出现的任何标点符号的方法。

当我说puncutation时,我指的是

返回的任何字符
import string
print (string.punctuation)

谢谢!

2 个答案:

答案 0 :(得分:3)

我会使用正则表达式:

>>> re.split(r'(\W)', 'This is a sentence. This is another sentence.')
    ['This',
 ' ',
 'is',
 ' ',
 'a',
 ' ',
 'sentence',
 '.',
 '',
 ' ',
 'This',
 ' ',
 'is',
 ' ',
 'another',
 ' ',
 'sentence',
 '.',
 '']

您可以浏览结果列表,更改单词,然后''.join()将其重新标记为在相同位置使用相同标点符号的句子。

答案 1 :(得分:0)

只是坚持原件会更容易,不是吗?将标点符号放回去的最终目标是什么?如果你只是要重建整条生产线,为什么不把它放在第一位呢?

pattern = '['+''.join(string.punctuation)+']+' # Make a char set in regex syntax

for line in file:
    tokens = line.split(' ')
    for token in tokens:
        parsed = parse_token(re.sub(pattern, token))
        # Now do whatever else you might need to do with token and parsed.
    # Remember, you still have access to the `line` string and `tokens` list!

def parse_token(token):
    pass # Do whatever you need to do with your "clean" token here.