0
char1= "P"
length=5
f = open("wl.txt", 'r')

for line in f:
if len(line)==length and line.rstrip() == char1:
   z=Counter(line)
   print z

長さ=5で文字pを含む行のみを出力したい.これまでのところ

  f = open("wl.txt", 'r')
    for line in f:
    if len(line)==length :#This one only works with the length
      z=Counter(line)
      print z

誰かを推測しますか?

4

1 に答える 1

5

あなたの問題は次のとおりです。

if len(line)==length and line.rstrip() == char1:

行の長さが 5 文字の場合、末尾の空白を削除した後、長さ 1 の文字列と等しいかどうかを比較しています...たとえば、「abcde」は「p」と等しくなることはなく、チェック5文字ではないため、行に「p」が含まれていると実行されません...

何をしようとしているのかわからないCounter

修正されたコードは次のとおりです。

# note in capitals to indicate 'constants'
LENGTH = 5
CHAR = 'p'

with open('wl.txt') as fin:
    for line in fin:
        # Check length *after* any trailing whitespace has been removed
        # and that CHAR appears anywhere **in** the line
        if len(line.rstrip()) == LENGTH and CHAR in line:
            print 'match:', line
于 2012-10-28T08:02:44.880 に答える