Python3 正则表达式不适用于脚本,但适用于 pythex.org

Posted

技术标签:

【中文标题】Python3 正则表达式不适用于脚本,但适用于 pythex.org【英文标题】:Python3 regular expression not working on script, but works on pythex.org 【发布时间】:2019-05-23 02:55:22 【问题描述】:

我正在用 Python3 编写一个脚本,我想使用正则表达式。我有一些 utf-8 编码文件用作我的主脚本的配置文件。

我希望更改它们的某些行(经典配置更改)。

我的代码仍然处于 poc 状态,是这样的:

regex = re.compile('^SHOW_ALL\s[^:]')
with open('./config.txt', encoding='utf-8', mode='r+') as old_file:
    for line in old_file.read():
            if regex.match(line):
                print(line)

config.txt 是这样的:

#Κάτι στα ελληνικά

SHOW_ALL OFF 15
PRINT ON
SHOW_VALUES O

COM 0
PRINTER_NAME samsung_not_a_real_name
CAMERA 33

我在pythex.org 检查了我的正则表达式,它似乎工作正常。

可能出了什么问题?

*链接重定向到我在 regex.org 尝试过的确切正则表达式和文本

【问题讨论】:

删除.read(),使用for line in old_file: 为什么会这样? 因为它的意思是“逐行读取文件” 【参考方案1】:

尝试用old_file.readLines();替换old_file.read();

【讨论】:

成功了。你能解释一下为什么吗?我已经使用 .read 很长时间并且一直在工作。 readlines() 有什么变化? readLines() 返回一个包含文件所有行的列表,而read() 将所有文件文本作为字符串返回。for line in old_file.read(): 循环遍历文件的每个字符。 嗯,有道理。

以上是关于Python3 正则表达式不适用于脚本,但适用于 pythex.org的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式适用于 regex101.com,但不适用于 prod

正则表达式适用于 regex101.com,但不适用于 prod

正则表达式验证不适用于 Google Chrome Android 应用程序,但适用于 Chrome 浏览器 - PC

RegEx 替换适用于 Ruby gsub,但不适用于 sed

sql 脚本适用于 MySQL,但不适用于 google bigquery

VBS 脚本适用于 XP 32 位但不适用于 7 64 位