我有一个文件,我从中读取了一组单词,这个文件是" file1.txt"。
内容,例如" file1.txt"文件如下:
Hello how are you? Very good!
我要做的就是消除示例中出现的那些符号字符。
对于上一个示例,最后一个短语如下:
Hello how are you Very good
我的想法是,一旦我读完所有单词,就将它们存储在列表中以应用相应的"替换"删除所有类型的无效字符。
我想到的另一个想法是,当我加载.txt文件时直接在那里应用替换,但是在尝试不同的方法之后我不应用删除无效字符。
这是我的代码:
# -*- coding: utf-8 -*-
import sys
def main():
characters = '!?¿-.:;'
aux = []
with open('file1.txt','r') as f:
for line in f:
for word in line.split():
aux.append(word)
for a in aux:
for character in characters:
a = a.replace(character,"")
if __name__ == '__main__':
main()
正如您所看到的,我的代码的第一部分存储在名为' aux'的列表中。来自txt文件的所有单词。
但我不知道如何申请"替换"从我的话中消除无效字符的方法。
答案 0 :(得分:1)
你只是重新分配循环变量,而不是改变列表!将最后一个循环更改为:
for i in range(len(aux)):
for character in characters:
# this actually changes the list element
aux[i] = aux[i].replace(character, "")
您的旧版本大致相当于:
for i in range(len(aux)):
a = aux[i]
for character in characters:
a = a.replace(character, "")
# aux[i] is unimpressed ;)
答案 1 :(得分:1)
通过直接遍历文件并将其内容写入变量并过滤掉不需要的字符,可以更简单地实现它。
例如,以下是包含内容的'file1.txt'
文件:
Hello how are you? Very good!
然后我们可以执行以下操作:
def main():
characters = '!?¿-.:;'
with open('file1.txt') as f:
aux = ''.join(c for c in f.read() if c not in characters)
# print(aux) # Hello how are you Very good
我们看到aux
是文件的内容,没有不需要的字符,可以根据所需的输出格式轻松编辑。
例如,如果我们想要一个单词列表,我们可以这样做:
def main():
characters = '!?¿-.:;'
with open('file1.txt') as f:
aux = ''.join(c for c in f.read() if c not in characters)
aux = aux.split()
# print(aux) # ['Hello', 'how', 'are', 'you', 'Very', 'good']