关于Windows Python里的“\r”问题:ERROR: .lst file contains \r at pos 4. This should never happen.

在运行EMAN2的EMAN2 projectmanager里的2D analysis的时候,出现这个提示,自己去搜为什么的时候发现说是   :“\r 问题是本机 Windows Python 程序特有的”。我是直接用的win10,而不是linux系统,那这个 “\r” 问题我应该怎么解决?

以下为ERROR的全部内容:
ERROR: .lst file contains \r at pos 4. This should never happen. (If you edit a .lst file with a text editor on Windows, it will corrupt the file). Aborting program.
QObject::~QObject: Timers cannot be stopped from another thread

顺便一提,因为我有很大量的.lst文件,不可能单个单个去改。

我刚接触python,因为EMAN2的需要,所以开始了解,但是运行过程中出现了问题,所以可以的话请麻烦将具体步骤列一下。

win中的"\r"是转义符回车,如果不想用转义,最好在\前再加一个\,或者直接在字符串外最前头加上r。比如r"dfj\rskldjf" 或者"asl\\rlksdf"

在win上手动修改了数据?

不要win上修改数据。
没有源数据的话去linux上去掉\r试试
https://blog.csdn.net/lovelovelovelovelo/article/details/79239068

解决方法:
参考:
cat data/train/text |tr -d '/r'

用附件发下示例文件

如果您用的是win10,可以安装一个WSL,然后在WSL基础上安装一个Linux,可以参考博客:

原因是在谷歌的技术论坛上看到说是,windows上有很多bug,但linux比较少,使用WSL构建双系统很方便。

img


import platform

str=*********
str = str.encode().decode(encoding="ascii", errors="ignore") if platform.system() == "Windows" else str

.lst 文件哪里来的呢?不能有 /r 为什么它里面还有呢?生成 .lst 文件的程序有问题,让开发程序的人改

python中的"\r"在语法中代表特殊的含义,即转义符,表示将光标的位置回退到本行的开头位置
还有其他转义符,比如\n代表换行,\t代表制表符,\r代表回车等
你这个报错是因为把文件中\r识别成了转义符,需要修改代码,在前面加上'r',告诉系统,这个字符串不需要转义,系统就不会把它当作转义符,而当作字符串解读
如下面案例

print("hello\nworld")  #\n代表换行,输出结果会换行
# output:
# hello
# world
print(r"hello\nworld")  #前面加上r,系统不会把\n解读为换行
# output:
# hello\nworld

对于怎么修改,要根据你的代码进行修改,这里无法具体给出方案

可以参考一下本人笔记:https://blog.csdn.net/qq_45797116/article/details/110423429#comments_22869799%EF%BC%8C%E6%84%9F%E8%A7%89%E6%98%AF%E4%B8%AA%E7%BC%96%E7%A0%81%E8%BD%AC%E6%8D%A2%E3%80%81%E8%BD%AC%E4%B9%89%E9%97%AE%E9%A2%98%EF%BC%8C%E8%AE%B0%E5%BE%97%E7%82%B9%E8%B5%9E%E5%91%A6%EF%BC%8C%E8%B0%A2%E8%B0%A2~

https://blog.csdn.net/weixin_54977781/article/details/123498299?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-5-123498299-ask-7774334.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-5-123498299-ask-7774334.pc_feed_download_top3ask

在运行EMAN2的EMAN2 projectmanager里的2D analysis的时候,出现这个提示,自己去搜为什么的时候发现说是 :“r 问题是本机 Windows Python 程序特有的”。我是直接用的win10,而不是linux系统,那这个 “r” 问题我应该怎么解决?

以下为ERROR的全部内容:
ERROR: .lst file contains r at pos 4. This should never happen. (If you edit a .lst file with a text editor on Windows, it will corrupt the file). Aborting program.
QObject::~QObject: Timers cannot be stopped from another thread

windows下python代码中,解决文件路径中\所导致的问题
字母前加r标识raw string,也叫原始字符串常量
1、正则表达式,规避反斜杠的转义
a = re.compile(r'\s*)
2、系统路径,防止路径中\t被转义
path = r'D:\text'