Как я могу игнорировать строку, которая содержит символ alphanumeri c при чтении текстового файла в python - PullRequest
0 голосов
/ 23 января 2020

Я читаю текстовый файл в python, который содержит в основном числовые c строки вместе с некоторыми буквенно-цифровыми c строками. Мне нужно отделить нечетные и четные числа и записать в новые файлы, но я получаю сообщение об ошибке при переходе к строкам alphanumeri c. пожалуйста помоги. например .... скажем, txt файл содержит следующее .... 2,4,6,10p et c. Я пытался с этим кодом. Я хочу, чтобы этот код работал так, как после записи четного и нечетного в соответствующий файл ... он должен сказать, что ваша работа выполнена, но эти строки остались, как есть .... мы можем сделать это ??

file = open("num.txt","rt")
even = open("even.txt","w+")
odd = open("odd.txt","w+")
for i in file:
    if i.strip:
        num = int(i)
        if (num % 2 == 0):
            even.write(str(num))
            even.write("\n")

        else:
            odd.write(str(num))
            odd.write("\n")

Но отображается следующая ошибка

File "G:/Py_projects/odd_even.py", line 6, in <module>
    num = int(i)
ValueError: invalid literal for int() with base 10: '10p\n'

Процесс завершен с кодом выхода 1, пожалуйста, ответьте. Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 января 2020

Если ваш текстовый файл выглядит следующим образом.

test.txt
1
2
3 
4
5
6
10p
4
83
456
497987
4564
6589
5493
321654

Это должно работать для вас.

with open('test.txt','r') as f:
    even=[]
    odd=[]
    alphanum=[]
    for line in f:
        val=line.strip('\n').strip()
        if val.isdigit():
            if int(val)%2==0:
                even.append(int(val))
            else:
                odd.append(int(val))
        else:
            alphanum.append(val)
with open('even.txt','w') as f1:
    for i in even:
        f1.write(str(i)+'\n') #writing even numbers to even.txt file

print(even)
print(odd)
print(alphanum)

Как указано в комментариях AM C переписать val=line.strip('\n').strip() как val=line.strip('\n ')


Вы должны сделать то же самое для odd и alphanum.

output

[2, 4, 6, 4, 456, 4564, 321654]
[1, 3, 5, 83, 497987, 6589, 5493]
['10p']
0 голосов
/ 24 января 2020
with open('file.txt','r') as f:
    for line in f:
        line = line.strip('\n').strip()
        if line.isdigit():
            if int(line) % 2 == 0:
                with open  ('even.txt', 'w') as e:
                     e.write (line + '\n')
            else:
                with open ('odd.txt', 'w') as o:
                     o.write (line + '\n')
        elif line.isalnum():
            with open ('alphanum.txt', 'w') as a:
                     a.write (line + '\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...