我有一个输出文本文件,我只想要151行中的数字13.0如何在python中读取txt文件中特定位置的数字号码?
13.0 = ebeam1!在GeV的
束1的总能量与74.761227线479
#集成重量(PB):74.761227
我不知道如何读这些数字,并把它们写在另一个文件中的行?
我有一个输出文本文件,我只想要151行中的数字13.0如何在python中读取txt文件中特定位置的数字号码?
13.0 = ebeam1!在GeV的
束1的总能量与74.761227线479
#集成重量(PB):74.761227
我不知道如何读这些数字,并把它们写在另一个文件中的行?
您想要使用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'
科里劲爆的回答会的工作,但如果你不知道你正在寻找的行是什么号码你可以这样做:
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
感谢上帝,你的问题,你会基本上通过文件中的行用一个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)进行搜索
嗨,@ surge10!欢迎来到StackOverflow。您可能需要在编辑器中的每行之前至少添加四个空格,或者突出显示并单击“{}”按钮,以便在答案中格式化代码。它会帮助他人理解你在说什么! – PaSTE
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应该有所帮助。
不知道你在找什么作为答案。但是您可以查看RegEx语言集。它内置到python中,用于解析字符串。 (https://regex101.com/) – MaylorTaylor