如何摆脱除python中字母以外的所有内容?

时间:2020-01-19 17:17:11

标签: python list file text

我有一个像这样的文本文件:

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


如何删除所有多余的内容,例如“ ...”,“ ..”和“ @”,并将单词作为列表中的项?

我尝试过

filename.rstrip().split()

3 个答案:

答案 0 :(得分:0)

这应该有效:

if(req.query.format!==undefined && req.query.format=="csv")

本质上,

  1. 列表中仅包含空格或A-Z或a-z字母
  2. 将字母重新组合成一个字符串
  3. 用空格分隔字符串

答案 1 :(得分:0)

使用正则表达式。在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是您要查找的列表。

答案 2 :(得分:0)

我将您提到的内容放在文件中,并将其命名为“ 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] *'->查找所有包含字母,空格和换行符的模式,然后将其替换为空(例如:删除它们)

split:将新创建的字符串转换为列表。

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

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