Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
在Ruby中使用文件中的字符串和数组_Ruby_Arrays_String_Map_Split - Fatal编程技术网

在Ruby中使用文件中的字符串和数组

在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/(.*?

我有一个包含8K+英语单词的文本文件(“dict.txt”):

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'
,just
a.map!{e | e[/.+-/]
。您的目标是编辑文件还是只是将单词读入数组?如果您将文件读入数组
a
a[0]='apple--description text'
,just
a.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