我有一个名为“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/