我所知道的每种编程语言(Perl,Javascript,PHP,Python,ASP,ActionScript,Commodore Basic)都使用单引号和双引号来分隔字符串.
这将创建不必去正在进行的情况很大的篇幅来正确对待报价,因为报价在字符串的内容极为常见.
为什么编程语言不使用其他字符来分隔字符串,而是在普通会话中使用的字符串\,| 或{}例如)所以我们可以继续我们的生活?
这是真的吗,还是我忽略了什么?是否有一种简单的方法可以停止在现代编程语言中使用字符串的引号?
print <<< END
我在这里知道文档语法,但是对于较小的字符串操作,它过于复杂并且使格式化变得复杂.
结束;
[更新]你们中的许多人都提到了仅使用ASCII字符的重要性.我更新了示例以反映(反斜杠,管道和大括号).
我需要从Unix中的文本文件中获取记录.分隔符是多个空格.例如:
2U2133 1239
1290fsdsf 3234
Run Code Online (Sandbox Code Playgroud)
由此,我需要提取
1239
3234
Run Code Online (Sandbox Code Playgroud)
所有记录的分隔符将始终为3个空格.
我需要在unix脚本(.scr)中执行此操作,并将输出写入另一个文件或将其用作do-while循环的输入.我试过以下:
while read readline
do
read_int=`echo "$readline"`
cnt_exc=`grep "$read_int" ${Directory path}/file1.txt| wc -l`
if [ $cnt_exc -gt 0 ]
then
int_1=0
else
int_2=0
fi
done < awk -F' ' '{ print $2 }' ${Directoty path}/test_file.txt
Run Code Online (Sandbox Code Playgroud)
test_file.txt是输入文件,file1.txt是查找文件.但上面的方法不起作用,并在awk -F附近给我语法错误
我尝试将输出写入文件.以下在命令行中工作:
more test_file.txt | awk -F' ' '{ print $2 }' > output.txt
Run Code Online (Sandbox Code Playgroud)
这是在命令行中将记录写入output.txt.但是同样的命令在unix脚本中不起作用(它是.scr文件)
请让我知道我哪里出错了,以及如何解决这个问题.
谢谢,
维萨克
Arduino(C语言)解析带分隔符的字符串(通过串行接口输入)
在这里找不到答案:/
我想通过串行接口(Serial.read())向我的arduino发送一个由逗号分隔的三个数字的简单字符串.这三个数字的范围可以是0-255.
例如.
255,255,255
0,0,0
1,20,100
90,200,3
我需要做的是将发送到arduino的字符串解析为三个整数(比方说r,g和b).
所以当我发送100,50,30时,arduino会把它翻译成
int r = 100
int g = 50
int b = 30
Run Code Online (Sandbox Code Playgroud)
我尝试了很多代码,但没有一个能够工作.主要问题是将字符串(字符串)转换为整数.我发现可能会有strtok_r用于分隔符目的,但那是关于它的.
谢谢你的任何建议:)
我正在使用strtok
将字符串拆分为标记.有谁知道实际计算令牌数量的任何功能?
我有一个命令字符串,我需要拆分它并传递参数execve()
.
谢谢!
编辑
execve
将参数作为char**
,所以我需要分配一个指针数组.我不知道有多少分配而不知道有多少令牌.
我有一个列data.frame
,其中一些空格应该是分隔符,有些只是一个空格.
#input data
dat <- data.frame(x=c("A 2 2 textA1 textA2 Z1",
"B 4 1 textX1 textX2 textX3 Z2",
"C 3 5 textA1 Z3"))
# x
# 1 A 2 2 textA1 textA2 Z1
# 2 B 4 1 textX1 textX2 textX3 Z2
# 3 C 3 5 textA1 Z3
Run Code Online (Sandbox Code Playgroud)
需要将其转换为5列data.frame
:
#expected output
output <- read.table(text="
A 2 2 textA1 textA2 Z1
B 4 1 textX1 textX2 textX3 Z2
C 3 5 textA1 Z3",sep="\t")
# V1 V2 …
Run Code Online (Sandbox Code Playgroud) 我有一个CSV文件,其格式如下所示:
"FieldName1","FieldName2","FieldName3","FieldName4"
"04/13/2010 14:45:07.008","7.59484916392","10","6.552373"
"04/13/2010 14:45:22.010 ","6.55478493312","9","3.5378543"
......
请注意,CSV文件中每行的开头和结尾都有双引号字符,该","
字符串用于分隔每行中的字段.CSV文件中的字段数可能因文件而异.
当我尝试将其读入numpy via时:
import numpy as np
data = np.genfromtxt(csvfile, dtype=None, delimiter=',', names=True)
所有数据都以字符串值的形式读入,由双引号字符包围.这不是不合理的,但对我来说没什么用处,因为我必须返回并将每列转换为正确的类型
当我使用时delimiter='","'
,除了第一个和最后一个字段外,一切都按照我的意愿运行.由于行和行尾字符的开头是单个双引号字符,因此不会将其视为第1个和最后一个字段的有效分隔符,因此它们会被读入,例如,"04/13/2010 14:45:07.008
并且6.552373"
- 请注意前导和尾部双字符-分别引用字符.由于这些冗余字符,numpy假设第1个和最后一个字段都是字符串类型; 我不希望如此
是否有一种方法可以指示numpy按照我的方式读取以这种方式格式化的文件,而不必在初始读取后返回并"修复"numpy数组的结构?
我正在尝试更改MySQL命令分隔符,以便我可以创建一个包含多个命令的过程.但是,在MySQL 5.1.47上似乎无法识别delimiter命令.我在MySQL 5.0.91上测试过,它在那里工作.
DELIMITER //;
DELIMITER ;//
Run Code Online (Sandbox Code Playgroud)
我想在两种情况下都从phpmyadmin运行它.使用5.0.91不是一个选项,因为我需要使用events(CREATE EVENT
).
错误信息:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER //' at line 1
Run Code Online (Sandbox Code Playgroud)
有没有理由它不起作用,或者是否有替代方法可以完成同样的事情(创建一个包含多个查询的过程)?
我正在做练习,我必须从键盘输入一个字符串.该字符串将是简单的算术,例如"2 + 4 + 6 - 8 + 3 - 7".是的,格式必须是这样的.中间有单个空格.
这个想法是采取这个字符串,并最终打印出答案.到目前为止,这是我的代码:
public class AddemUp {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.print("Enter something like 8 + 33 + 1345 + 137: ");
String s = kb.nextLine();
Scanner sc = new Scanner(s);
sc.useDelimiter("\\s*\\+\\s*|\\s*\\-\\s*");
int sum = 0;
int theInt;
Scanner sc1 = new Scanner(s);
sc1.useDelimiter("\\s*\\s*");
String plusOrMinus = sc1.next();
int count = 0;
if(s.startsWith("-"))
{
sum -= sc.nextInt();
}
while(sc.hasNextInt())
{
theInt = sc.nextInt();
if(count …
Run Code Online (Sandbox Code Playgroud) 我想用Spark处理一个大文本文件"mydata.txt"(实际文件的大小约为30GB).它的记录分隔符是"\ |" 接着是"\n".因为加载文件的默认记录分隔符("sc.textFile")是"\n",所以我将org.apache.hadoop.conf.Configuration的"textinputformat.record.delimiter"属性设置为"\ | \n"到指定记录分隔符:
AAAAA_|BBBBB_|
CCCCC\
DDDDD
EEEEE_FFFFFFFFFFFF\ |
GGGGG_|HHHHH_|
IIIII\
GGGGG\
KKKKK_|LLLLLLLLLLL\ |
MMMM_|NNNNN_|OOOOO\ |
Run Code Online (Sandbox Code Playgroud)
接下来,我在spark-shell中执行了以下代码:
import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.io.Text
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat
val LINE_DELIMITER = "\\ |\n"
val FIELD_SEP = "_\\|"
val conf = new Configuration
conf.set("textinputformat.record.delimiter", LINE_DELIMITER)
val raw_data = sc.newAPIHadoopFile("mydata.txt", classOf[TextInputFormat], classOf[LongWritable], classOf[Text], conf).map(_._2.toString)
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.然而,
scala> val data = raw_data.filter(x => x.split(FIELD_SEP).size >= 3)
data: org.apache.spark.rdd.RDD[String] = FilteredRDD[4] at filter at <console>:22
scala> data.collect
org.apache.spark.SparkException: Job aborted due to stage failure: Task not serializable: …
Run Code Online (Sandbox Code Playgroud) 有没有办法在Java中的字符串列表中提取常见模式?
例如,如果我们有一个值列表:
001-L1
002-L2
003-L3
004-L4
...
Run Code Online (Sandbox Code Playgroud)
有没有办法推断我们有3digits,然后是' - ',然后是字母L,最后是数字字符?
我认为它与常见的子串或类似的东西有关,但我还没有找到任何东西.
谢谢!
编辑:显然它不会是一个完美的识别,它只会返回基于数据的推荐.
我正在努力建立的是接近这一点.在视频中,当用户点击列时,建议将数据拆分为":".