我总是在Mac上使用Eclipse进行Python编码。今天,我在Windows上的Visual Studio中进行了Python编码。当我在Mac的Eclipse上重新运行代码时,发生了一些奇怪的事情,我不知道为什么。
我在Eclipse和Visual Studio上都使用 Python 2.7 。数据输入和代码也是一样的。数据输入采用.txt格式
这是一个示例数据行:
<p>abcbdABCDE</p>pewpewpew
在Visual Studio中,它可以识别\n
之后有pewpewpew
,但Eclipse不能。{/ p>
因此,当我使用endswith()
方法时,如果我键入endswith("</p>pewpewpew\n")
,Visual Studio可以帮助查找整行数据,但Eclipse不能,即使我尝试endswith("</p>pewpewpew")
,它仍然无法识别整条线。
我想知道这是因为Eclipse或Mac中的某些设置会在我刚刚下载我在Windows上使用的数据时更改.txt格式吗?
注意:在真正的问题中,我必须使用endswith()
,不能使用in
或not in
简化代码示例(适用于Visual Studio而非Eclipse)
pth = "[file path]"
f = open(pth)
for l in f:
if l.endswith("</p>pewpewpew\n"):
print l
答案 0 :(得分:1)
我的猜测是,这里的问题是Windows和类Unix系统实际上如何记录换行符。在类Unix环境中,使用单个字符&#34; \ n&#34; - 换行符。在Windows环境中,两个字符用于表示新行 - &#34; \ r \ n&#34; - 回车符和换行符。
如果要解析的文件是在Windows中编写的,则该行以&#34; \ r \ n&#34;结尾。这是我最好的猜测。 VisualStudio可能配置为处理&#34; \ n&#34;和&#34; \ r \ n&#34;以类似的方式。 Eclipse要求您明确声明该行以&#34; \ r \ n&#34;结束。
确定文件实际写入方式的最佳方法是在文本编辑器中打开它,它将提供对不可显示的ASCII字符的直观解释。我通常使用Notepad ++执行此操作并打开&#34;显示所有字符&#34;选项。