Python结果问题

2024-06-02 04:58:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的新手,我被困在这上面了。我需要检查我是否能在文件中找到一个字符串。 我已经创建了文件内容.py你知道吗

代码:

import sys

for arg in sys.argv:
inputEAN=arg
EAN = open("/home/master/Documenti/Progetti/eanFZ.txt","r")

riga=EAN.readlines()

EAN.close()

print inputEAN

for i in range(len(riga)):
if inputEAN == riga[i]:
    print "OK"

从命令行:

$ python ContEAN.py 455

其中“455”将是inputEAN的值

这就是eanFZ.txt文件地址:

7777
777
0000000000156
0000000015
455
9999
85485
656565

问题是,我从来没有一个确定作为最终结果,我不知道为什么。。。你知道吗


Tags: 文件字符串inpytxt内容forsys
3条回答

首先,readlines()方法返回一个可以在循环中迭代的iterable对象。每次迭代都将使用文件的下一行。你知道吗

其次,文件的行在末尾有一个隐藏的换行符,因此它不等于argv中的字符串。这可以通过rstrip()方法删除。你知道吗

for i in riga:
    if inputEAN == i.rstrip():
        print "OK"

(您可能还需要检查缩进。您需要在每一行for和每一行if之后进入一个新的缩进级别。我认为这是由于复制和粘贴。)

你可以这样做

import sys

if len(sys.argv) < 2:
    print "must provide args"
    sys.exit()

with open("eanFZ.txt","r") as f:
    lines=[line.strip() for line in f]
    args = sys.argv[1:]

    for line in lines:
        if line in args:
            print "OK"

注意重要的事情是

args = sys.argv[1:]

不要用你的手系统argv[0]在比较循环中。它是脚本的名称。你知道吗

lines=[line.strip() for line in f]

从文件的行中去掉新行,使字符串匹配。你知道吗

您可以按以下方式更改脚本:

import sys

if len(sys.argv) == 1:
    exit;

inputEAN=sys.argv[1]

with open("file.txt","r") as f:
    for i, a_line in enumerate(f, 1):
        if inputEAN in a_line:
            print(i, a_line.strip())

这将打印行号和找到给定字符串的行。你知道吗

相关问题 更多 >