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