python - 删除每个单词除第一个字母外的所有字母并保留标点符号

标签 python python-3.x nltk

我有一个名为“MyTextFile.txt”的文本文件。我想删除所有字母并在它们的位置放置破折号每个单词的第一个字母除外,同时保留标点符号

假设文本文件“MyTextFile.txt”包含以下字符串:

男孩去了学校,然后吃了早餐! 哇,这不是一个好故事!?

想要的结果是这样的:

T-- b-- w-- t- t-- s----- , t-- a-- h-- b------ ! W-- , t--- 的 n-- 一个 n--- s---- ! ?

这是我的工作,几乎不错,但并不完美!

import nltk
file_content = open("MyTextFile.txt", encoding='utf8').read()
tokens = nltk.word_tokenize(file_content)
print(tokens)

first_letter = [i[0] for i in tokens]

new_words = ' '.join(first_letter).strip()
print(new_words)
appendFile = open('results_file.txt', 'w', encoding='utf8')
appendFile.write(new_words)

我的输出是这样的:

T b w t t s , t a h b ! W , t’s nan s ! ?

最佳答案

这种操作最好用正则表达式来完成:

import re
txt = "This is a test!"
dashed = re.sub(r"([A-Za-z])([A-Za-z]+)", lambda m: m[1] + "-"*len(m[2]), txt)
print (dashed)

将输出:T--- i- a t---!

并将其应用于文件:

with open("input_file.txt", 'r') as i:
    with open("output_file.txt", 'w') as o:
        for txt in i:
            dashed = re.sub(r"([A-Za-z])([A-Za-z]+)", lambda m: m[1] + "-"*len(m[2]), txt)
            o.write(dashed + '\n')

关于python - 删除每个单词除第一个字母外的所有字母并保留标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58639521/

相关文章:

python - 在文件中匹配字符串后处理文件

python - 将列表中的字符串转换为 float

python-3.x - 如何使用 python 或 Nltk 纠正俚语?

python - 法语和葡萄牙语的标记器困惑

python - 即使使用 "fromEncoding=UTF-8"之后,BeautifulSoup 也无法识别 UTF-8 字符

python - 将 NaT 替换为 0 天

python - 具有特定格式的货币

python - 根据每个元组内的值对元组列表进行分区

python - 车辆牌照 OCR

python-3.x - 从 div 类 XPath 中以字符串形式提取图像 url