如何在python中除去字母以外的所有内容?

2024-06-02 05:55:56 发布

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

我有这样一个文本文件:

莎莉。。。去了。。去商店!!#买了一个苹果和一个百吉饼@@ 然后她回家了


我如何删除所有额外的东西,如“…”和“.”和“@”,并将单词作为列表中的项目来获取

我试过了

filename.rstrip().split()

Tags: 项目苹果列表filename单词商店split文本文件
3条回答

这应该起作用:

s = "Sally ... went .. to the store !!# and bought an apple and a bagel..@@ Then  she went home."
s = [i for i in s if ord(i)>=65 and ord(i)<=122 or i==" "]
print("".join(s).split()))

本质上

  1. 在列表中仅包含空格、A-Z或A-Z字母
  2. 把字母重新连成一个字符串
  3. 用空格分隔字符串

我将您提到的内容放在一个文件中,并将其命名为“mix_char.txt”。我又添加了两条随机线来测试新线。以下是文件内容的外观:

Sally ... went .. to the store !!# and bought an apple and a bagel..@@ Then she went home.
Sally ...      @#$#%$#%$%#                  went ..
  to .......A Store #$%#@$in 4567downtown

然后,我使用下面的代码片段读取文件,然后使用正则表达式执行此操作: 考虑到您只寻找由字母组成的单词:

re.sub->;用于用另一个图案替换一个图案

[^a-zA-Z\n]*'->;找到所有不包含字母、空格和新行的模式,并将其替换为零(即:删除它们)

拆分:将新创建的字符串转换为列表

import re
with open('mix_char.txt') as fh:
    str = fh.read()
    print (re.sub('[^a-zA-Z \n]*','',str).split())

您可以根据需要将修改后的数据写回另一个文件

使用正则表达式。在python中,这是通过re模块完成的

[^a-zA-Z ]表示不是字母(或空格)的字符。您可以使用re.sub将它们全部替换为空白:

import re

def remove_non_letters(string):
    return re.sub("[^a-zA-Z] ", " ", string).split()

编辑:

在文本文件中读取

with open('data.txt', 'r') as file:
    string = file.read()
    result = remove_non_letters(string)

result是您要查找的列表

相关问题 更多 >