我正在尝试在两个文本文件中的字符串之间进行字符串比较。该文本由从.exe读取的bintext应用程序生成,并生成格式如下所示的文件:
文件pos Mem pos ID Text
======== ======= == ====
<00> 00000000004D 00000040004D 0!此程序无法在DOS模式下运行。0000000000A0 0000004000A0 0 Rich!
我尝试使用空格进行line.split
,但结果最后一列内容也用空格分隔。而不是[!this program cannot be run in dos mode]
我得到[!this,program,cannot,be,run,in,DOS,Mode,.]
有没有简单的方法可以将整个第3列从txt文件放入数组而不拆分它?
答案 0 :(得分:2)
这个怎么样:
data = []
for line in input_file:
data.append(line.strip().split(' ', 3))
这会给你:
['00000000004D', '00000040004D', '0', '!This program cannot be run in DOS mode.']
['0000000000A0', '0000004000A0', '0', 'Rich!']
split()
功能
答案 1 :(得分:1)
正如您在Python docs中看到的那样,str.split
方法有一个可选的maxsplit
参数,如果给出,则指定可以在列表上执行的最大拆分数
假设您已经知道如何阅读该文件,您可以指定最多3
个分割:
data = "00000000004D 00000040004D 0 !This program cannot be run in DOS mode."
data.split(None, 3)
答案 2 :(得分:1)
如果字符串的第一部分具有恒定长度,则使用切片;
In [1]: s = '00000000004D 00000040004D 0 !This program cannot be run in DOS mode.'
In [2]: s[28:]
Out[2]: '!This program cannot be run in DOS mode.'
答案 3 :(得分:0)
In [93]: s = "00000000004D 00000040004D 0 !This program cannot be run in DOS mode."
In [94]: s.rsplit("0",1)[-1] # rsplit once on the 0
Out[94]: ' !This program cannot be run in DOS mode.'
import re
[96]: re.split("\d\s",s)[-1] # single digit followed by a space
Out[96]: '!This program cannot be run in DOS mode.'