我有一个刮网器,刮取以下数据:
TESTDATA
DATA:DATA
Data £9500
Data £930
Data £500
Data £2250
Data £930
Data £500
Data £2250
DATATEST
DATA:DATA
Data £95001
Data £9302
Data £5003
Data £22504
Data £9305
Data £5006
Data £22507
运行:print full_end
返回:
[u'TESTDATA', 'DATA:DATA', 'Data £9500', 'Data £930', 'Data £500', 'Data £2250', 'Data £930', 'Data £500', 'Data £2250', '\r', DATATEST', 'DATA:DATA', 'Data £95001', 'Data £9302', 'Data £5003', 'Data £22504', 'Data £9305', 'Data £5006', 'Data £22507']
运行:print repr(full_end)
返回:
u"TESTDATA\nDATA:DATA\nData £9500\nData £930\nData £500\nData £2250\nData £930\nData £500\nData £2250\n\r\nDATATEST\nDATA:DATA\nData £95001\nData £9302\nData £5003\nData £22504\nData £9305\nData £5006\nData £22507"
运行:print repr('\r\n'.join(full_end).strip())
返回:
u"TESTDATA\r\nDATA:DATA\r\nData £9500\r\nData £930\r\nData £500\r\nData £2250\r\nData £930\r\nData £500\r\nData £2250\r\n\r\r\nDATATEST\r\nDATA:DATA\r\nData £95001\r\nData £9302\r\nData £5003\r\nData £22504\r\nData £9305\r\nData £5006\r\nData £22507"
图片:http://i.imgur.com/Qe0TE5Y.png
使用以下脚本
with open('FULL_DATA.txt','r') as full_end_datafile:
full_end_datafile_read = full_end_datafile.read()
encoded_data = '\n'.join(full_end).encode("Latin-1")
if full_end_datafile_read == encoded_data:
encoded_data = ""
else:
with open('FULL_DATA.txt','w') as full_end_datafile:
full_end_datafile.write('\n'.join(full_end).encode("Latin-1"))
rb
和wb
,我会得到以下结果:它无法识别数据是否相同,它会重新保存文件
有人知道怎么修吗?你知道吗
提前谢谢 -海弗莱克斯
你不需要回车
'\r'
作为记事本吗?你知道吗在进行比较之前,您可以尝试剥离
\r
和\n
。即使在字符串上运行.strip()来删除多余的空白也会有帮助,如果你不在乎那些看不见的东西的话。你知道吗打开文件时,请使用U标志:
这意味着“通用EOL”,并将所有不同的EOL(如
\r\n
)转换为\n
。EOL之间的差异是比较失败的原因之一。可能还有其他的,但从这个开始。你知道吗这是由于Python在处理文本文件时进行的行尾转换造成的。Windows EOL是两个字符(
CR
和LF
),而Unix/Linux只使用LF
。虽然Windows的Notepad只识别Windows的约定,但Notepad++同时识别两者。在第一个映像中,Python是当前的OS约定;在第二个映像中,您只是传递二进制数据(您将得到Unix/Linux约定)。你知道吗相关问题 更多 >
编程相关推荐