0

我正在尝试在两个文本文件中的字符串之间进行字符串比较。文本由 bintext 应用程序从 .exe 读取并生成格式如下的文件生成:

文件 pos 内存 pos ID 文本

======== ======= == ====

00000000004D 00000040004D 0 !这个程序不能在DOS模式下运行。

0000000000A0 0000004000A0 0 富有!

我试图line.split用空格做 a ,但结果最后一列内容也用空格分隔。而不是[!this program cannot be run in dos mode]我得到[!this,program,cannot,be,run,in,DOS,Mode,.]

是否有任何简单的方法可以将 txt 文件中的整个第 3 列放入数组而不拆分它?

4

4 回答 4

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()功能文档

于 2014-08-07T21:30:11.673 回答
1

正如您在 Python文档中看到的那样,该str.split方法有一个可选maxsplit参数,如果给出,则指定可以在列表上执行的最大拆分数。

假设您已经知道如何读取文件,您可以指定最大3拆分数:

data = "00000000004D 00000040004D 0 !This program cannot be run in DOS mode."
data.split(None, 3)
于 2014-08-07T21:27:44.077 回答
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.'
于 2014-08-07T21:27:56.910 回答
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.'
于 2014-08-07T21:36:10.927 回答