2016-06-01 6 views
0

私はコードのこの部分を扱っていますが、それを得ることはできますが、それを得ることはできません。しばらくすると、私の関数 "open(in users.txt '):if"が文字列の一部を識別しようとしていないということが発見されました。users.txtに "ボラ " 私がuser.txtの中に "Bola"と書くと、それは私に偽を与えるでしょう。 私はこの問題を理解することができましたが、それを修正する方法はわかりません。 U.find()を使用しようとしましたが、それは(あなたが開いているため、あなたの文字列を見つけることができませんpython:開いている文字列(example.txt)が文字列を読み取っていない場合

U=open('users.txt','a+') 
    bola = "Bola" 
    if bola in open('users.txt'): 
     U.close() 
     print("usercid found") 
    else: 
     U.write("[" + str(cid) + "]"+str(m.from_user.first_name)+"\n") 
     U.close() 
     print("no usercid gaaaaa") 
+0

簡単に言えば:それを避けるために、あなたの線に沿って何かを行うことができますが、実際にファイルを読み込むことはありません。最初に、あなたが好きなようにしてください。 – TigerhawkT3

答えて

3

open('users.txt')ファイルの行を列挙発電機ではなく、ファイルの内容を含む文字列を返し、そのためif bola in open('users.txt')True場合にのみを返します。生成されたシーケンスにbolaに一致する要素がある場合。あなたが次のことをやりたい、あなたのユースケースについては

if bola in open('users.txt').read(): 
    U.close() 
    print("usercid found") 

open(...).read()はあなたにファイル全体を表す文字列を返し、bolaは以下のようにファイルに含まれている場合など、bola in open(...).read()Trueを返します。サブライン、必ずしもそれ自身の線としてではありません。

これには、openが作成するファイル記述子がリークするという問題があります(元のコードもあります)。

with open('users.txt') as fr: 
    if bola in fr.read(): 
     U.close() 
     print("usercid found") 
    else: 
     ... 
+0

ねえ、これは実際に働いた、ありがとう! 私はファイル記述子がどのように役立つかはわかりませんが、後で読むことができます。もう一度おねがいします – Bola

+0

これは、ファイル内の特定の文字列を見つけるための良いアプローチです。 –

0

事前に...任意のソリューションがapreciatedされます...どちらか

おかげで動作しませんでした'users.txt')は文字列のリストを返します。文字列のリストはそれぞれ改行で返されます。最も簡単な解決策はbola = "Bola\n"

かを検索するには次のとおりです。

for line in open('file.txt'): 
    if bola == line.rstrip(): 
     print("usercid found") 
     break 
+0

あなたは のような各行を返すことを意味するstring1 string2 string3 ??? 私は行間に必要な文字列を見つける方法はありますか? – Bola

+0

@DiegoErósteguiNavia、open( 'file.txt')は "bola \ n"のような行を返しますが、 "bola"と比較します。したがって、各行から改行を削除するか、検索クエリに '\ n'を追加します。 – kaspersky

0
U=open('users.txt','a+') 
bola = "Bola" 
for line in open('users.txt'): 
    if line.find(bola) >= 0: 
     U.close() 
     print("usercid found") 
    else: 
     U.write("[" + str(cid) + "]"+str(m.from_user.first_name)+"\n") 
     U.close() 
     print("no usercid gaaaaa") 
関連する問題