我有一些终端录制的数据并保存到打字稿文件中。我知道如果需要,我可以将其更改为.txt。问题似乎是,尽管在被问到文件编码时返回了UTF-8,我得到的错误似乎暗示了编码是其他的东西。例如,我无法将内容复制并粘贴到Word或其他文本编辑器中。
无论如何,我没有运气使用标准的.gsub!
或.tr
方法来删除此文件中的非数字字符。
输入如下:
_4ÑZŸs_4ÑZâ7o[?1034h
_4ÑZ8obash-3.2$ e4ÑZ”C
i[A e4ÑZõD
oscript -re4ÑZˇ?
i[Ae4ÑZ∑@
opython go.pyf4ÑZÌ
i
f4ÑZ£Ì
o
f4ÑZÊÚoattn 0
f4ÑZ,Ûoattn 0
attn 0
Hf4ÑZuÛoattn 0
attn 0
attn 0
attn 0
attn 0
attn 0
attn 0
其中' 0'可以是0到128之间的任何数字。
我只想在“' attn"”之后的数字。而且也没有。
这是我目前的代码:
File.open("input.txt").each do |line|
number = line.gsub('[0-9]+', ' ')
File.open("output.txt", "w+") { |f| f.write(number) }
end
并且根据我所做的任何小改动,我要么得到一个枚举器,要么只得到输入文件的最后一位数。
从来没有想过要做这个基本的事情会很困难。
奖励积分:让程序输出这些数字的最佳方法是将它们插入Excel工作表的第1列或第3列(无限期地直到终止终端中的程序)?
生成输入文件的Python程序只从Serial对象获取值并将它们输出到终端,终端生成有问题的文本文件。我只是试图将它们从这个文本文件手动移动到Excel(我现在愚蠢地尝试使用简单的Ruby
脚本自动执行任务)。
Python或Ruby中的脚本就足够了,只要它将.txt文件作为输入(因为我正在处理已经生成的数据)。
我有一台Mac,所以我使用Pages,如果这有所作为。
Here是相关的原始文件。编辑:出于安全原因删除了文件。
TL; DR
如何在新行上打印打字稿(看似非UTF-8)文件中的数字(每个数字长度为1-3位)?
如何自动完成整个过程,让我的Python程序无限期地(在无限while True:
循环内)将值插入.numbers
(Excel for Mac)文件?
谢谢!
答案 0 :(得分:1)
正则表达式:(?<=^attn\s)(?:[0-9]{1,2}|1[01][0-9]|12[0-8])$
或(?<=^attn\s)\d+
详细说明:
(?<=)
积极的外观\s
匹配任何空格字符(等于[\r\n\t\f\v ]
)(?:)
非捕获组[]
匹配列表中的单个字符{n,m}
n
和m
次之间的匹配|
或Python代码:
text = open(r'C:\text.txt').read()
matches = re.findall(r'(?<=^attn\s)(?:[0-9]{1,2}|1[01][0-9]|12[0-8])$', text, re.M)
输出:
['11', '0', '99', '120', '0']
答案 1 :(得分:0)
你应该把这个问题分成两个单独的问题。这是第一个答案;一些应该做你想做的Ruby代码:
numbers = File.readlines('input.txt').grep(/^attr \d+/).map do |line|
line.split('attr ').last.chomp.to_i
end
File.write('output.txt', numbers.join("\n"))