在Ruby中使用文件中的字符串和数组
我有一个包含8K+英语单词的文本文件(“dict.txt”):在Ruby中使用文件中的字符串和数组,ruby,arrays,string,map,split,Ruby,Arrays,String,Map,Split,我有一个包含8K+英语单词的文本文件(“dict.txt”): apple -- description text angry -- description text bear -- description text ... 我需要删除文件中每一行“-”之后的所有文本 解决此问题最简单、最快的方法是什么?如果您想要提高速度,您可能需要考虑使用命令行上的sed执行此操作: File.read("dict.txt").gsub(/(?<=--).*/, "") sed -r 's/(.*?
apple -- description text
angry -- description text
bear -- description text
...
我需要删除文件中每一行“-”之后的所有文本
解决此问题最简单、最快的方法是什么?如果您想要提高速度,您可能需要考虑使用命令行上的
sed
执行此操作:
File.read("dict.txt").gsub(/(?<=--).*/, "")
sed -r 's/(.*?) -- .*/\1/g' < dict.txt > new_dict.txt
sed-r的/(.*)--.*/\1/g'new_dict.txt
这将创建一个仅包含单词的新文件
new_dict.txt
。如果需要速度,可以考虑使用命令行上的sed
执行此操作:
sed -r 's/(.*?) -- .*/\1/g' < dict.txt > new_dict.txt
sed-r的/(.*)--.*/\1/g'new_dict.txt
这将创建一个新文件new_dict.txt
,其中仅包含单词。以以下内容开头:
words = [
'apple -- description text',
'angry -- description text',
'bear -- description text',
]
如果您只需要前面的单词-->
:
或:
如果您需要单词和--
:
如果目标是创建不包含描述的文件版本:
File.open('new_dict.txt', 'w') do |fo|
File.foreach('dict.txt') do |li|
fo.puts li.split(/\s-+\s/).first
end
end
通常,为了避免在输入文件增长到很大比例时出现可伸缩性问题,请使用foreach
对输入文件进行迭代,并将其作为单行进行处理。当逐行迭代或尝试将其全部写入并作为缓冲区或数组进行处理时,这是一种清洗,处理速度最快。咕噜咕噜地读一个大文件可能会使机器爬行速度变慢,或者使代码崩溃,从而使它无限慢;逐行IO速度惊人且没有潜在问题。从以下内容开始:
words = [
'apple -- description text',
'angry -- description text',
'bear -- description text',
]
如果您只需要前面的单词-->
:
或:
如果您需要单词和--
:
如果目标是创建不包含描述的文件版本:
File.open('new_dict.txt', 'w') do |fo|
File.foreach('dict.txt') do |li|
fo.puts li.split(/\s-+\s/).first
end
end
通常,为了避免在输入文件增长到很大比例时出现可伸缩性问题,请使用
foreach
对输入文件进行迭代,并将其作为单行进行处理。当逐行迭代或尝试将其全部写入并作为缓冲区或数组进行处理时,这是一种清洗,处理速度最快。咕噜咕噜地读一个大文件可能会使机器爬行速度变慢,或者使代码崩溃,从而使它无限慢;逐行IO速度惊人且没有潜在问题。您的目标是编辑文件还是将单词读入数组?如果您将文件读入数组a
(a[0]='apple--description text'
,justa.map!{e | e[/.+-/]
。您的目标是编辑文件还是只是将单词读入数组?如果您将文件读入数组a
(a[0]='apple--description text'
,justa.map!{e | e[/.+-/]
。Sn,我在查找w[,n]
的文档时有点困难。我注意到(对于给定的数组单词
)您可以使用w[,0]
或w[]
而不是w[,1]
。您可以提供参考或解释吗?它是字符串的一部分:.Sn,我在查找w[,n]
的文档时有点困难。我注意到(对于给定的数组words
),您可以使用w[,0]
或w[]
而不是w[,1]
。您能提供参考或解释吗?它是字符串的一部分:。
words.map{ |w| w[/^(.+ --)/, 1] } # => ["apple --", "angry --", "bear --"]
File.open('new_dict.txt', 'w') do |fo|
File.foreach('dict.txt') do |li|
fo.puts li.split(/\s-+\s/).first
end
end