Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python中的文本中删除无效符号_Python_String_Python 3.x - Fatal编程技术网

从python中的文本中删除无效符号

从python中的文本中删除无效符号,python,string,python-3.x,Python,String,Python 3.x,我正在尝试从文本中删除无效符号。我有以下代码: def parse_documentation(filename): filename=open(filename) invalidsymbols=["`","~","!", "@","#","$"] for lines in filename: print(lines) for word in lines: print(word) for letter

我正在尝试从文本中删除无效符号。我有以下代码:

def parse_documentation(filename):
    filename=open(filename)
    invalidsymbols=["`","~","!", "@","#","$"]
    for lines in filename:
        print(lines)
        for word in lines:
        print(word)
            for letter in word:
                if invalidsymbols==letter:
                    print(letter)
首先,我只是通过打印字母来测试它,然后我会添加代码来删除它(del())。我有比列表中的符号更多的无效符号,但是很多,所以我只想使用5或6来检查。我遇到的问题是,它不仅打印无效的符号,而且还打印我文本中的所有字母。此外,出于某种原因,它也会在我的文本之前打印额外的字符。我该如何解决这个问题

我使用的文本是:

he's a jolly good fellow#
I want pizza!
I'm driving to school$
怎么样


怎么样?

JoeC已经回答了,但我想补充一点,如果无效符号在该行中出现不止一次,那么您最好执行以下操作

def parse_documentation(filename):
    filelines = open(filename)
    invalidsymbols=["`","~","!", "@","#","$"]
    for line in filelines:
        print(lines)
        for symbol in invalidsymbols:
            if symbol in line:
                print("Above line contains %s symbol"%symbol)

关于替换符号,请参阅。

JoeC已回答,但我想补充一点,如果您的无效符号在该行中出现多次,那么您最好执行以下操作

def parse_documentation(filename):
    filelines = open(filename)
    invalidsymbols=["`","~","!", "@","#","$"]
    for line in filelines:
        print(lines)
        for symbol in invalidsymbols:
            if symbol in line:
                print("Above line contains %s symbol"%symbol)

关于更换符号,请参阅。

您可以使用
str.translate
一次删除所有不需要的符号:

>>> txt = """he's a jolly good fellow#
... I want pizza!
... I'm driving to school$"""
>>> print txt.translate(None, "`~!@#$")
he's a jolly good fellow
I want pizza
I'm driving to school
因此,您的代码可能类似于

def parse_documentation(filename, invalid_symbols):
    symb_to_remove = ''.join(invalid_symbols)
    with open(filename, 'rb') as in_file:
        for line in in_file:
            safe_line = line.translate(None, symb_to_remove)
            <here comes code to do smthng with safe_line>

您可以使用
str.translate
一次删除所有不需要的符号:

>>> txt = """he's a jolly good fellow#
... I want pizza!
... I'm driving to school$"""
>>> print txt.translate(None, "`~!@#$")
he's a jolly good fellow
I want pizza
I'm driving to school
因此,您的代码可能类似于

def parse_documentation(filename, invalid_symbols):
    symb_to_remove = ''.join(invalid_symbols)
    with open(filename, 'rb') as in_file:
        for line in in_file:
            safe_line = line.translate(None, symb_to_remove)
            <here comes code to do smthng with safe_line>

尝试为此任务使用textcleaner
按照此链接访问主页和文档:
调用删除符号功能,它将返回一条干净的文本。它只使用正则表达式
功能描述:

尝试使用textcleaner库执行此任务
按照此链接访问主页和文档:
调用删除符号功能,它将返回一条干净的文本。它只使用正则表达式
功能描述:

这不是
for
处理字符串的方式。@IgnacioVazquez Abrams我应该如何访问每行中的字母?也许你应该更仔细地检查
for
正在做什么。这不是
for
处理字符串的方式。@IgnacioVazquez Abrams我应该如何访问每行中的字母?也许你应该检查更多
for
正在做的事情非常接近。欢迎:)每次遇到无效符号(如果符号出现多次)时,您仍在打印该行。只要在代码中添加另一行,您只需执行
字符串。替换(字符“”)即可删除字符串中不需要的字符
Welcome:)每次遇到无效符号(如果符号出现多次)时,您仍在打印该行。只要在代码中添加另一行,您就可以通过执行
string.replace(character,”)