Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从多文本文件名中获取数字并使用它?_Python_Regex_Python 3.x - Fatal编程技术网

Python 如何从多文本文件名中获取数字并使用它?

Python 如何从多文本文件名中获取数字并使用它?,python,regex,python-3.x,Python,Regex,Python 3.x,我是python的新用户。我尝试编写一个脚本来处理多个文本文件,所有这些文件都具有相同的名称和索引,如 sample1_freq780Hz_accRate600Hz_V3Volt_1_.txt sample1_freq780Hz_accRate600Hz_V3Volt_2_.txt sample1_freq780Hz_accRate600Hz_V3Volt_3_.txt 我使用了以下代码: def get_numbers_from_filename(filename): result =

我是python的新用户。我尝试编写一个脚本来处理多个文本文件,所有这些文件都具有相同的名称和索引,如

sample1_freq780Hz_accRate600Hz_V3Volt_1_.txt
sample1_freq780Hz_accRate600Hz_V3Volt_2_.txt
sample1_freq780Hz_accRate600Hz_V3Volt_3_.txt
我使用了以下代码:

def get_numbers_from_filename(filename):
  result = re.search(r'\d+', filename).group(0)
  return result for filename in os.listdir('input/'): 
  print(get_numbers_from_filename(filename))
但它没有给我想要的结果 我需要一个代码来获取以下数字:

freq: 780 Hz
accRate: 600 Hz
V: 3 Volt
如何在完整脚本中处理和使用这些数字作为参数?

您可以使用正则表达式:

import re
import os
new_s = [dict(zip(['freq', 'accRate', 'V'], ['{} {}'.format(c, a) for a, c in zip(['Hz', 'Hz', 'Volt'], re.findall('(?<=freq)\d+|(?<=accRate)\d+|(?<=V)\d+', i))])) for i in os.listdir('input/')]
print(new_s[0])
要访问列表中的值,请迭代
new\s

values = [new_s[0][i] for i in ['freq', 'accRate', 'V']]
输出:

{'freq': '780 Hz', 'accRate': '600 Hz', 'V': '3 Volt'}
['780 Hz', '600 Hz', '3 Volt']

你需要密码吗?您的代码在哪里?请在提问之前尝试解决问题。使用正则表达式或普通的旧字符串操作很容易解决这个问题。编写一些代码并将其包含在您的问题中。我使用了此方法,但没有给我想要的结果,我无法在脚本中使用它。def get_numbers_from_filename(文件名):result=re.search(r'\d+',filename)。group(0)在os.listdir中返回文件名的结果('input/'):print(get_numbers_from_filename(文件名))谢谢你的帮助,但是如果我有很多文件,如何为它们运行代码呢?在提取这些数字后如何使用它们?@etshooo您可以迭代
os.listdir
的结果。请看我最近的编辑。谢谢你的关注。它工作得很好。但是我只需要得到这个结果{'freq':'780hz','accRate':'600hz','V':'3volt'}对每个文件不重复,因为它是相同的。另外,如何在脚本中的计算中使用这些数字?抱歉,有更多问题,因为我是新来的pythonuser@etshooo请看我最近的编辑,效果很好。提前谢谢