[英]How to remove special characters from a list of strings?
我正在读取文件并在文件内容上使用正则表达式来执行一些操作。 在读取文件时,我没有在其中找到任何特殊字符,但是在文件内容上使用正则表达式并将其保存到列表后,数字前有特殊字符,如 \\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
列表包含原始文件中不存在的所有这些特殊字符。
如果您知道所有这些特殊字符,您可以使用 str 的maketrans
和translate
方法将它们替换为以下方式的空格:
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
第二个参数的相应字符(因此它们必须具有相等的长度)并且每个字符出现在第三个参数中的 maketrans 被删除。 在上面的例子中, \\xa0
被替换为空格, \\t
被替换为空格。
你好,
你能在不同的 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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.