在不使用pandas的情况下向文件中添加提取字符的列

2024-10-05 10:11:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件数据,如图所示

09-oct-2010 00:00:00,A,MIN1 MX2 PT34
09-oct-2010 00:00:00,B,MIN1 G2 Y4 R6 MX2 FL3 PT9
09-oct-2010 00:00:43,A,TG1 MIN1 PT28

我正在试着提取“PT”后面的数字。在提取数字之后,我想将这些数字添加到一个新列中,例如

09-oct-2010 00:00:00,A,MIN1 MX2 PT34,34
09-oct-2010 00:00:00,B,MIN1 G2 Y4 R6 MX2 FL3 PT9,9
09-oct-2010 00:00:43,A,TG1 MIN1 PT28,28

下面是我的代码。请建议如何提取不使用熊猫和添加回csv文件。如果使用熊猫,我如何读取PT的数字

x = str1Var.get()
with open(x,"r") as infile:
    writer = csv.writer(infile)
    for line in infile.readlines():
        dur = line[-4:-2]
        print(dur)

dur包含提取的整行数字


Tags: 文件csv数字infileoctg2r6dur
1条回答
网友
1楼 · 发布于 2024-10-05 10:11:29

这给了我你所期望的准确输出,而不需要使用任何特定的包

sourceUrl = open(r"C:\Users\seramu\Desktop\tools\stackoverflow\dummy.txt", "r")
csvOutput = open(r"C:\Users\seramu\Desktop\tools\stackoverflow\dummycsv.csv", "w")
for st in sourceUrl:
    csvOutput.write(st.strip('\n') + ',')
    newlist = st.split(" ")
    newstr = ''.join((ch if ch in '0123456789.-e' else ' ') for ch in newlist[-1])
    listnum = [int(i) for i in newstr.split()]
    csvOutput.write(str(listnum[0]) + '\n')


csvOutput.close()
sourceUrl.close()

输入文件:

09-oct-2010 00:00:00,A,MIN1 MX2 PT34
09-oct-2010 00:00:00,B,MIN1 G2 Y4 R6 MX2 FL3 PT9
09-oct-2010 00:00:43,A,TG1 MIN1 PT28

输出文件:

09-oct-2010 00:00:00,A,MIN1 MX2 PT34,34
09-oct-2010 00:00:00,B,MIN1 G2 Y4 R6 MX2 FL3 PT9,9
09-oct-2010 00:00:43,A,TG1 MIN1 PT28,28

“dur=line[-4:-2]”问题中的“dur=line[-4:-2]”不会始终获取正确的数字。所以我把字符串分成一个列表,只考虑列表的最后一个元素。一旦我有了最后一个元素,我将检查字符,因为我们不确定有多少数字将在其中,所以通过迭代它来找到数字中存在。在迭代时,我检查它是一个字符还是一个数字,并将其存储在一个新的列表中,然后用换行符将其写入文件中

相关问题 更多 >

    热门问题