Saya membaca file teks dengan python yang sebagian besar berisi baris numerik bersama dengan beberapa baris alfanumerik. Saya perlu memisahkan angka ganjil dan genap dan menulis di file baru, tetapi saya mendapatkan kesalahan saat masuk ke baris alfanumerik. tolong bantu. misalnya.... katakanlah file txt berisi berikut....2,4,6,10p dll. Saya mencoba dengan kode ini. Saya ingin kode ini berfungsi sebagai, setelah menulis genap dan ganjil ke file masing-masing .... seharusnya dikatakan, pekerjaan Anda selesai tetapi baris-baris ini dibiarkan apa adanya .... bisakah kita melakukannya??

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")

Tapi itu menunjukkan kesalahan berikut

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

Proses selesai dengan exit code 1 mohon reply. Terima kasih.

0
ASHISH PRIYADERSHY 23 Januari 2020, 20:52

2 jawaban

Jawaban Terbaik

Dengan asumsi file teks Anda terlihat seperti ini.

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

Ini harus bekerja untuk Anda.

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)

Seperti yang disarankan oleh dalam komentar AMC tulis ulang val=line.strip('\n').strip() sebagai val=line.strip('\n ')


Anda harus melakukan hal yang sama untuk odd dan alphanum.

Keluaran

[2, 4, 6, 4, 456, 4564, 321654]
[1, 3, 5, 83, 497987, 6589, 5493]
['10p']
1
Ch3steR 24 Januari 2020, 06:00
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')
0
Swati Srivastava 24 Januari 2020, 06:38