繁体   English   中英

python用数字替换字符串

[英]python replace strings with numbers

我正在建立一个系统,以.txt格式对一些.log文件进行排序,以便稍后将其发送给excel。 有70多个文件,在每个文件中我扫描一个关键字时,我都会得到100多个要保存在.txt中的字符串。 我可以获取所需的每个字符串,并查看从哪个.log文件中提取了每个日志,但是现在我想使用相应的数字(每个文件一个数字)来重命名.log来自的文件。 我已经尝试过计算循环,数组和字符串,但是我做对了。

import glob
import os
import itertools


def LogFile(filename, tester):
    message = []
    data = []
    with open(filename) as filesearch:   # open search file
        filesearch = filesearch.readlines()   # read file

    file = filename[39:]

    for line in filesearch:
        if tester in line:   # extract ""
            start = '-> '
            end = ':\ '
            number = line[line.find(start)+3: line.find(end)]        #[ord('-> '):ord(' :\ ')]
            data.append(number)   # store all found wors in array

            text = line[line.find(end)+3:]
            message.append(text)

    with open('Msg.txt', 'a') as handler:  # create .txt file
        for i in range(len(data)):
            handler.write(f"{file}|{data[i]}|{message[i]}")

# open with 'w' to "reset" the file.
with open('Msg.txt', 'w') as file_handler:
    pass
# ---------------------------------------------------------------------------------

for filename in glob.glob(r'C:\Users\\Desktop\Access\*.log'):
    LogFile(filename, 'Sending Request: Tester')

现在怎么样

from .txt file  
GTX77_ 2017-05-20_1209.log|166 9 02 F
GTX77_ 2017-08-24_1209.log|166 9 03 F
JBB 925_1720_1400.log|161 9 02 F 
JBB 925_1724_1900.log|161 9 12 F

我要什么

new .txt file
1|166 9 02 F
1|166 9 03 F
2|161 9 02 F
2|161 9 12 F

所以我的问题是,是否有一些函数可以将变量“文件名”更改为相应的数字(例如,来自文件GTX77.log的所有.log文件都改为索引1,而来自JBB925的所有.log都获得索引2。 。)

您可以为此使用字典。 您为每个文件名初始化它,然后可以使用get(filename, default_value)恢复索引

i=1
d = {}
for filename in filenames:
   if not d.get(filename, False):
       d[filename] = i
       i+=1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM