Вы получаете ошибку, потому что j - это строка, а не целое число (кстати, вам не нужно вызывать str(j)
; это уже строка).
Вы можете удалить строки с сочетанием прописных и строчных букв следующим образом:
all_one_case = [ line
for line in f.readlines()
if line.isupper() or line.islower() ]
Примечание: кредит за использование isupper()
и islower()
(использованный оригинал re
.) Дает некоторые другие ответы на этот вопрос.
Это также будет включать, например, 10 green bottles
, поскольку оно содержит только строчные буквы, хотя оно также содержит цифры и пробелы. От вопроса я не могу сказать, является ли это намерением или нет. Если вам нужны только буквы, вы можете использовать этот тест вместо:
… if re.match('[A-Z]*$|[a-z]*$', line) ]
Если вы хотите заменить файл этими строками, вы можете снова открыть его для записи:
with open(file_name, 'r') as f:
for line in all_one_case:
f.write(line)