2017-08-10 105 views
0

我有一个输出文本文件,我只想要151行中的数字13.0如何在python中读取txt文件中特定位置的数字号码?

13.0 = ebeam1!在GeV的

束1的总能量与74.761227线479

#集成重量(PB):74.761227

我不知道如何读这些数字,并把它们写在另一个文件中的行?

+0

不知道你在找什么作为答案。但是您可以查看RegEx语言集。它内置到python中,用于解析字符串。 (https://regex101.com/) – MaylorTaylor

回答

0

您想要使用linecache模块。

import linecache 
line = linecache.get('path/to/file', 479) 

然后将其写入另一个文件。

with open('other/file.txt', 'w') as f: 
    f.write(line) 

假设你想只提取的行号部分:

import re 
In [4]: re.search(r'(\d+.*\d*$)', line).group() 
Out[4]: '74.761227' 
0

科里劲爆的回答会的工作,但如果你不知道你正在寻找的行是什么号码你可以这样做:

import re 

regex = re.compile(r"# Integrated weight \(pb\) : (?P<number>-?\d+\.?\d*)") 

with open(file_path, "r") as lines: 
    for line in lines: 
     match = re.match(regex, line) 
     if match: 
      number = float(match.group("number")) 
      return number 
-1

感谢上帝,你的问题,你会基本上通过文件中的行用一个for循环中循环,并在每行添加到列表中。因此,无论何时,您都可以用您想要的行号呼叫清单,并将该特定行发送给您。然后将它保存在一个变量中,然后对其应用正则表达式(正则表达式),以仅获取浮点数。

例如TXT文件:

151 Jesus 13.0 
152 John 
153 Peter 74.745392 

然后在你的Python文件

import re 

file_line_arr = [] 
with open('example.txt', 'r') as file: 
    for line in file: 
     file_line_arr.append(line) 
line_1 = file_line_arr[151-1] 
line_3 = file_line_arr[153-1] 

first_number = re.findall('\d+.?\d+', line_1) 
second_number = re.findall('\d+.?\d+', line_3) 

first_number_wq = re.sub("'", "", str(first_number)) 
first_number_wb = re.sub('(\[|\])', '', first_number_wq) 

second_number_wq = re.sub("'", "", str(second_number)) 
second_number_wb = re.sub('(\[|\])', '', second_number_wq) 

with open('new_file.txt', 'w') as new_file: 
    new_file.write(first_number_wb + '\n' + second_number_wb) 

这是一本关于蟒蛇,你会很喜欢 - (dive into python3)进行搜索

+0

嗨,@ surge10!欢迎来到StackOverflow。您可能需要在编辑器中的每行之前至少添加四个空格,或者突出显示并单击“{}”按钮,以便在答案中格式化代码。它会帮助他人理解你在说什么! – PaSTE

0
import linecache 
import re 

ln = linecache.getline('so_qn_test_file.txt', 479) 
nums = re.findall(r"[-+]?\d*\.\d+|[-+]?\d+", ln) 
# print(nums) 
with open('op_file.txt','w') as f: 
    f.write(','.join(nums)) 

这将工作。我已经测试过了。 有关正则表达式的解释,this应该有所帮助。

相关问题