如何从字符串列表中删除特殊字符?

2024-09-25 00:23:46 发布

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

我正在读取一个文件,并对文件内容使用正则表达式来执行一些操作。在读取文件时,我在文件中找不到任何特殊字符,但在文件内容上使用正则表达式并将其保存到列表中后,在数字之前有一些特殊字符,如\t和\xa0

文件内容示例:

Hydrochloric Acid to pHÂ 3.3-5.0        q.s.    q.s.    q.s.    pH-regulator    Ph Eur, NF

应用正则表达式后,变为:

Hydrochloric Acid to pHÂ\xa03.3-5.0\tq.s.\tq.s.\tq.s.\tpH-regulator\tPh Eur, NF

在没有单独的字符串替换技术的情况下,如何删除所有这些内容

代码:

def extract(filename):
    file=open(filename)
    file=file.read()
    print(file)
    print("wefewwEF3RF3")
    result = []
    med = r"(?:{})".format("|".join(map(re.escape, medicines)))
    pattern = re.compile(r"^\s*" + med + r".*(?:\n[^\w\n]*\d*\.?\d+[^\w\n]*(?:\n.*){2})?", re.M|re.IGNORECASE)
    result = pattern.findall(file)
#    result.encode('ascii', 'ignore')
    newresult = []
    for line in result:
        newresult.append((line.strip()))
    return newresult

newresult列表包含原始文件中不存在的所有这些特殊字符


Tags: 文件tore内容列表tqresulteur
2条回答

如果您知道所有这些特殊字符,您可以使用str的maketranstranslate方法用空格替换它们,方法如下:

txt = 'Hydrochloric Acid to pHÂ\xa03.3-5.0\tq.s.\tq.s.\tq.s.\tpH-regulator\tPh Eur, NF'
t = ''.maketrans('\xa0\t','  ')
newtxt = txt.translate(t)
print(newtxt)

输出

Hydrochloric Acid to pHÂ 3.3-5.0 q.s. q.s. q.s. pH-regulator Ph Eur, NF

maketrans接受2或3个参数。它创建转换表,然后可以在translate方法中使用该表,其工作如下:maketrans的第一个参数中的每个字符被替换为maketrans的第二个参数中的相应字符(因此它们必须具有相同的长度),并且maketrans的第三个参数中的每个字符都被删除。在上面的例子中\xa0被替换为空格\t被替换为空格

enter image description here

你能在不同的Python版本下检查你的代码吗?它似乎在3.8.0上正常工作

def extract(filename):
    file='Hydrochloric Acid to pHÂ 3.3-5.0        q.s.    q.s.    q.s.    pH-regulator    Ph Eur, NF'
    result = []
    med = r"(?:{})".format("|".join(map(re.escape, file)))
    pattern = re.compile(r"^\s*" + med + r".*(?:\n[^\w\n]*\d*\.?\d+[^\w\n]*(?:\n.*){2})?", re.M|re.IGNORECASE)
    result = pattern.findall(file)
    #result.encode('ascii', 'ignore')
    newresult = []
    for line in result:
        newresult.append((line.strip()))
    print(file)
    print (newresult)
    return newresult
extract('test')

相关问题 更多 >