从文件中读取行(string:value)并写入值为>的行; 4000到新文件

时间:2017-09-02 16:58:54

标签: python python-3.x

当前代码:

f1 = open("input.txt",'r')
f2 = open("output.txt",'w')
for i in f1.readlines():
    parts = i.split(":")

    if parts[2] > 4000 :
        f2.write(i)
f1.close()
f2.close()

嗨,我一直在尝试,但我无法让我的代码工作,看到我的这个问题是如何编写的,真是太棒了。基本上我有一个包含字符串,delimeter(:)和值的测试文件。 例如:

maxwalker2004:0
maxterix:564
maxxorclank8:1313
maxxie100:0
maxxman390:45
maxxor51:0
maxy234567890:20
maxxy35:0
maxyboy2010:0
maxydupo:297
maxyoops57:748
maxy088:0
maxychamp9:132
maxymillio:0
mayapooh514:0
mayelistar:0
mayer48:425
mayasissy461:0
mayowastar:0
mays12345:332
mayna2cute:0
mayyah3:0
mazefire3609:4088
mbjewett:0
mbbvcac77:0
mbakkertje:0
mbieber11:0
mbiles:5497
mbomb56:797
mcadamslance:0
mcake123:0
mcarlin99:486
mburnsb1:0
mcash225:0
mb1005263:0
mazi23:5497
mbz360:0
mccayleigh:0
mccoyzachary21:0
mcbloom8:259
mcd2315:0
mcdude22:1305
mccurdy03:8275
mcdino13:0
mcdudu45:355
mcethan25:0
mcfootball10:26130

正在从.txt file1读取这些行。我希望将值大于4000的值(字符串:值)的所有行写入第二个输出文件(file2) 其余的被忽略了。

不确定,但无法让它发挥作用...... 谢谢,谢谢

3 个答案:

答案 0 :(得分:0)

f1 = open("file1", 'r')  # Opening file1
f2 = open("file2", 'w')  # Opening file2
for i in f1.readlines():  # Iterating through file1 line by line
    if int(i.split(':')[-1]) > 4000:  # Splitting the string by ':'
        f2.write(i)
f1.close()
f2.close()

试试这个

答案 1 :(得分:0)

仅在:分割一次,并在尝试制作int之前验证它是否为整数。

for line in f1.readlines():
    key, value = line.split(':', 1)
    if value.isdigit() and int(value) > 4000:
        f2.write(line + '\n')

或者与上下文管理员一起:

with open('file1', 'r') as in_file:
    with open('file2', 'w') as out_file:
        for line in in_file.readlines():
            key, value = line.split(':', 1)
            if value.isdigit() and int(value) > 4000:
                out_file.write(line + '\n')

答案 2 :(得分:0)

检查它是否适用于这种情况:

if int(parts[1]) > 4000 :