line = initDict.readline()
while line:
line = initDict.readline()
print(line)
if len(line) == 5: # <<< problem
line = initDict.readline()
transfer.append(line)
I'm trying to get the length of the line, not the line number.
Input:
1
22
33335
4444
55555
Output:
55555 (line 5)
(where’s 33335? (line 3))
CodePudding user response:
You can use the len
# Open the file in read mode
with open('file.txt', 'r') as file:
# Read the first line
line = file.readline()
# Get the length of the line
line_length = len(line)
# Print the length of the line
print(line_length)
CodePudding user response:
You are checking the length. That's not the problem.
The real problems are that, first, the lines you're reading include the line terminator character. Instead of '33335'
, you're getting '33335\n'
, which is 6 characters. Instead of '4444'
, you're getting '4444\n'
, which is 5 characters.
The second problem is that after you read a line and find it has 5 characters, you read another line and store that line instead of the one that actually had 5 characters. '4444\n'
passes the check, but you append '55555\n'
instead (or maybe it's '55555'
if your file doesn't end with a line terminator).
You need to remove the trailing line break, and store the lines that match the check instead of the lines immediately after:
for line in initDict:
line = line.removesuffix('\n')
if len(line) == 5:
transfer.append(line)
CodePudding user response:
Here is a code to show the lines that have 5 digits.
with open("test.txt", "r") as initDict:
lines = initDict.readlines()
for line in lines:
if len(line) > 5:
print(line)
and here is the code to show each line has how many digits:
with open("test.txt", "r") as initDict:
lines = initDict.readlines()
for line in lines:
print(len(line.rstrip()))