如何使用正则表达式 python3 替换除空格和换行符旁边的数字以外的所有其他符号

Posted

技术标签:

【中文标题】如何使用正则表达式 python3 替换除空格和换行符旁边的数字以外的所有其他符号【英文标题】:How to replace all other symbols besides digits beside whitespace and newline using regex python3 【发布时间】:2020-10-23 20:07:49 【问题描述】:

所以,我有一个文件,我正在做这个任务。我首先用 0 替换所有数字,然后用 1 替换所有字母。之后,我应该用 2 替换所有其他符号,但我想保留空格和换行符。代码如下:

import re

ulaz = input("Unesite ime fajla:")
izlaz = input("Unesite ime fajla:")

with open(ulaz) as existing_file:
    text = existing_file.read()
    text = re.sub(r'[0-9]', '0', text)
    text = re.sub(r'[A-Za-z]', '1', text)
    text = re.sub(r'\D', '2', text)
    print(text)

    with open(izlaz, "w") as file_new:
        file_new.write(text)

如您所见,我正在读取一个文件并写入另一个文件。最后一个 re.sub 替换所有包括空格和换行符。我已经搜索了一个答案,但没有找到一个可以改变所有其他符号的答案,不包括数字、空格和换行符。

【问题讨论】:

【参考方案1】:

您最终的正则表达式替换对我来说很重要,因为此时“所有其他符号”应定义为 0 或 1 以外的任何值(或空格,您也想保留)。考虑这个稍作修改的版本:

text = existing_file.read()
text = re.sub(r'[0-9]', '0', text)
text = re.sub(r'[A-Za-z]', '1', text)
text = re.sub(r'[^01\s]', '2', text)

【讨论】:

谢谢,但我不得不删除所有三行中的 + 号,因为加号会给我一个数字代表整个单词而不是每个字符等等。

以上是关于如何使用正则表达式 python3 替换除空格和换行符旁边的数字以外的所有其他符号的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中使用正则表达式匹配空格、回车和换行?

JS去除空格和换行的正则表达式(推荐)

POSIX正则表达式中的环顾四周,以匹配除最后一个(对于gsub而言)以外的所有空格

js用正则把换行br替换为段落p

如何使用正则表达式替换除指定字符串之外的所有内容

如何在PHP中用正则表达式替换所有实际上不是空格的空格