删除标点符号并创建带有单词列表的.csv文件,标记标点是否存在

2024-10-02 20:40:39 发布

您现在位置:Python中文网/ 问答频道 /正文

到目前为止,我得到的是:

import re
import csv

outfile1 = open('test_output.csv', 'wt')
outfileWriter1 = csv.writer(outfile1, delimiter=',')

rawtext = open('rawtext.txt', 'r').read()
print(rawtext)

rawtext = rawtext.lower()
print(rawtext)

re.sub('[^A-Za-z0-9]+', '', rawtext)
print(rawtext)

首先,当我运行这个程序时,标点符号没有被删除,所以我想知道我的表达是否有问题?在

其次,我尝试生成一个.csv列表,列出所有单词是否有标点符号,例如一个文本文件,上面写着“你好!今天天气不错。”会输出:

^{pr2}$

我知道我可以用.split()来拆分单词,但除此之外,我不知道该怎么做!任何帮助都将不胜感激。在


Tags: csvtestimportreoutputopen单词writer
2条回答

试用此版本:

import string
import csv

header = ('ID','PUNCTUATION','WORD')
with open('test_output.csv', 'wt') as outf, open('rawtext.txt') as inf:
    outfileWriter1 = csv.DictWriter(outf, header, delimiter=',')
    for k, rawtext in enumerate(inf):
        out = {'PUNCTUATION': 'N', 'ID': k+1}
        for word in rawtext.split():
           stripped = ''.join(i for i in word if i not in string.punctuation)
           if len(stripped) != len(word):
               out['PUNCTUATION'] = 'Y'
           out['WORD'] = stripped.lower()
        outfileWriter1.writerow(out)

你可以这样做:

from string import punctuation
import csv

strs = "Hello! It's a nice day."

with open('abc.csv', 'w') as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerow(['ID', 'PUNCTUATION', 'WORD'])
    #use enumerate to get word as well as index
    table = dict.fromkeys(map(ord, punctuation))
    for i, word in enumerate(strs.split(), 1):
        #str.translate is faster than regex
        new_strs = word.translate(table)
        #if the new word is not equal to original word then use 'Y'
        punc = 'Y' if new_strs != word else 'N'
        writer.writerow([i, punc, new_strs])

相关问题 更多 >