0

我试图声明一个字符串值等于行号的文本。

我用作验证表的文件的文件内容

domain1
=============================
xx-xx-xx-xx-xx-xx pc1
xx-xx-xx-xx-xx-xx pc2
xx-xx-xx-xx-xx-xx pc3
xx-xx-xx-xx-xx-xx pc4
xx-xx-xx-xx-xx-xx pc5
xx-xx-xx-xx-xx-xx pc6
xx-xx-xx-xx-xx-xx pc7
xx-xx-xx-xx-xx-xx pc8
xx-xx-xx-xx-xx-xx pc9
xx-xx-xx-xx-xx-xx pc10
=============================
domain2
=============================
xx-xx-xx-xx-xx-xx pc1
xx-xx-xx-xx-xx-xx pc2
xx-xx-xx-xx-xx-xx pc3
xx-xx-xx-xx-xx-xx pc4
xx-xx-xx-xx-xx-xx pc5
xx-xx-xx-xx-xx-xx pc6
xx-xx-xx-xx-xx-xx pc7
=============================
domain3
=============================
xx-xx-xx-xx-xx-xx pc1
xx-xx-xx-xx-xx-xx pc2
xx-xx-xx-xx-xx-xx pc3
xx-xx-xx-xx-xx-xx pc4
xx-xx-xx-xx-xx-xx pc5
xx-xx-xx-xx-xx-xx pc6
xx-xx-xx-xx-xx-xx pc7
=============================

我正在尝试做这样的事情:

var = sys.argv[1]

with open('table.txt') as x:
head1 = x.readline()
linenumber = 3
if not var == head1:
for line in x.readlines(linenumber):
print line
linenumber += 1
if x.readlines(linenumber) is ('============================='):
linenumber = 16
break

这是在 cmd 窗口中看到的实际输出:

"readline type error an integer is required"

作为上述代码块的结果,我希望获得所需的输出

"xx-xx-xx-xx-xx-xx pc1"

我将如何设置它以便我看到正确的数据?

4

2 回答 2

0

file.readlines(sizehint)参数不是行号,请参阅文档

文件是 Python 中行的迭代器:您可以for直接在 -loop 中使用它,也可以调用next()手动获取下一行:

with open("table.txt") as file:   # open file for reading
    for line in file:             # read it one line at a time
        line = line.strip()       # remove leading/trailing whitespace
        if separator == line:     # found separator e.g., '====..'
            line = next(line, "") # move to the next line
            print line,           # print the line after the separator line
            break                 # exit the loop

根据您的输入,它将打印:

xx-xx-xx-xx-xx-xx pc1

如果文件很小,您可以将其作为一个整体读入内存并使用字符串方法解析它,例如.partition(), .split(),使用正则表达式(re模块)等,例如:

import re

with open("table.txt") as file:
    m = re.search(r"(?m)^=+\s*$\s*(.*)", file.read())
    if m: # found
       print m.group(1)

它为您的输入产生相同的输出。通常,结果可能会有所不同,例如,正则表达式会在分隔符行之后跳过空白行。

于 2013-06-08T20:32:05.300 回答
0

你能遍历这些线吗?

for line in x:
    if 'static text' in line:
        print line
于 2013-06-07T16:05:37.663 回答