【问题标题】:Python3 regular expression not working on script, but works on pythex.orgPython3 正则表达式不适用于脚本,但适用于 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:
  • 为什么会这样?
  • 因为它的意思是“逐行读取文件”

标签: regex utf-8 pattern-matching python-3.5


【解决方案1】:

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

【讨论】:

  • 成功了。你能解释一下为什么吗?我已经使用 .read 很长时间并且一直在工作。 readlines() 有什么变化?
  • readLines() 返回一个包含文件所有行的列表,而read() 将所有文件文本作为字符串返回。for line in old_file.read(): 循环遍历文件的每个字符。
  • 嗯,有道理。
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多