0

如何从文本文件中删除这个分号 (;)。我的文本文件的内容:

    201911007,1,28;
    201203008,1,28;
    199710014,1,28;
    201612010,1,28;
    201710017,1,28;

然后python读取它如果我运行代码它总是在28末尾有分号

    with open("empMR.txt", 'r') as files:
    for dln in files:
        dln = dln.strip()
        if len(dln) >= 1:
            lii = dln.split(",")
            MR_empno.append(lii[0].strip())
            month.append(lii[1].strip())
            days_work.append(lii[2].strip())
print(days_work)

OUTPUT: ['28;', '28;', '28;', '28;', '28;'] 我想删除每个输出上的分号(;) 预期输出[28, 28, 28, 28 , 28]

4

4 回答 4

0

如果要删除 ; 从您的文件中永久保存。用vim打开文件

vi filename
then press esc
enter :%s/;$//g then enter
save the file esc-->:wq --> enter

如果你想在 python 中处理它

with open('filename.txt','r') as fp:
    data=fp.read()
data = data.splitlines()
data = [line.strip(';') for line in data]
于 2020-05-14T05:56:54.877 回答
0

正则表达式是字符串的强大工具。

import re
in_list = ['28;', '28;', '28;', '28;', '28;']
out_list = [re.sub(';', '', item) for item in in_list]
print(out_list)
['28', '28', '28', '28', '28']
于 2020-05-14T05:43:24.410 回答
0

只需包含您要删除的字符(包括;)

for dln in files:
    dln = dln.strip("; \n\r\t")

您不需要添加对其他函数的额外调用,尤其是不需要正则表达式(可能有其他正当理由使用正则表达式,请参见下面的示例)

data = re.findall("([^,]*)\s*,\s*([^,]*)\s*,\s*([^;]*)\s*;",files.read())
for empNo,monthNo,days_work in data:
    print("E:",empNo, "Month:",monthNo, "Days Worked:",days_work)
于 2020-05-14T05:49:51.423 回答
0

有几种方法可以解决这个问题。

  • 看看.replace()方法,类似的东西dln.replace(';', '')可能会有所帮助
  • 如果您的所有行看起来都相同,则可以删除最后一个字符-dln = dln[:-1]可能会有所帮助

你选择哪一种取决于你对数据看起来总是一样的信心,以及你更喜欢哪种方法

于 2020-05-14T05:44:25.553 回答