通过python仅从txt文件中提取特定文本
我有一个文本文件,其中包含以下变量及其值通过python仅从txt文件中提取特定文本,python,parsing,text,Python,Parsing,Text,我有一个文本文件,其中包含以下变量及其值 COM 0.95958 eh 26.9817 ehc 26.9817 ehoff 0 ew 0.181982 ewoff -0.00400919 oeh 429.788 sp_icr 15.3199 sp_il -11.4382 sp_pdelay -1.53578e-09 sp_pk_icr 15.0735 sp_pk_icr_f 7.81609e+09 sp_pk_il -12.2937 sp_pk_il_f 7.71
COM 0.95958 eh 26.9817 ehc 26.9817 ehoff 0 ew 0.181982 ewoff -0.00400919 oeh 429.788 sp_icr 15.3199 sp_il -11.4382 sp_pdelay -1.53578e-09 sp_pk_icr 15.0735 sp_pk_icr_f 7.81609e+09 sp_pk_il -12.2937 sp_pk_il_f 7.71614e+09 sp_pk_ild 3.05223 sp_pk_ild_f 7.3963e+08 sp_pk_rxrl -0.0909508 sp_pk_rxrl_f 3.01849e+09 sp_pk_txrl -6.33623 sp_pk_txrl_f 6.5967e+08 sp_rxrl -0.187543 sp_txrl -19.2629
如何仅提取特定变量及其对应值?如何提取sayCOM及其值以及ehc及其值
for filename in glob.glob(os.path.join(path, '*.log')):
with open(filename, 'rt') as in_file:
str = in_file.readline()
阅读完每一行后,我该如何继续?
我知道我可以使用子字符串并只提取所需的文本,但有没有其他方法可以这样做 我假设文件中的字符串是“ascii名称后跟类似浮点的数字”的重复模式,以空格分隔。因此,使用正则表达式解析字符串很方便
import re
s = "COM 0.95958 eh 26.9817 ehc 26.9817 ehoff 0 ew 0.181982 ewoff -0.00400919 oeh 429.788 sp_icr 15.3199 sp_il -11.4382 sp_pdelay -1.53578e-09 sp_pk_icr 15.0735 sp_pk_icr_f 7.81609e+09 sp_pk_il -12.2937 sp_pk_il_f 7.71614e+09 sp_pk_ild 3.05223 sp_pk_ild_f 7.3963e+08 sp_pk_rxrl -0.0909508 sp_pk_rxrl_f 3.01849e+09 sp_pk_txrl -6.33623 sp_pk_txrl_f 6.5967e+08 sp_rxrl -0.187543 sp_txrl -19.2629 "
r = re.compile(r'(\w+)\s+(-?\d+(?:\.\d+)?)') # into 2 groups
d = dict(r.findall(s))
print(d) # {'sp_pk_icr_f': '7.81609', 'COM': '0.95958', ...
print(d['COM']) # 0.95958 (but it is str)
print(float(d['COM'])) # 0.95958
我没有像字符串一样将float转换为float。如果您需要它,只需尝试:float(d[键])
- 如果文件有多行但属性保持不变,请替换所有换行符,如
李>s=open(file\u NAME).read()。替换('\n','')
- 如果“variable name”表示非数字开头字母,则将变量名称的regex部分替换为
([a-zA-Z]\w*)
d = {}
for fn in filenames:
s = open(fn, 'r').read()
d.update(r.findall(s))
现在,d从所有文件中都有var值对。所有内容都在一行中,还是用\n或\t分隔?此外,您希望如何提取值…作为元组?作为单独的变量?它们都在一行中。哪一个更好?我需要将提取的这些值转储到excel工作表中,并在后面用逗号分隔。谢谢!如果我必须从文件夹中的10个文件中读取相同的内容,我将如何修改此内容?如果我可以通过聊天或其他方式与您联系,是否可以?关于这一点,我还有其他一些疑问?@Potato这里似乎没有聊天系统?如果有聊天系统,你仍然可以发表评论。让我创建一个:)@Potato没问题