Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Python 正则表达式修复csv引号_Python_Regex_Scala_Csv_Regex Negation - Fatal编程技术网

Python 正则表达式修复csv引号

Python 正则表达式修复csv引号,python,regex,scala,csv,regex-negation,Python,Regex,Scala,Csv,Regex Negation,我有一个带引号的简单csv,类似于: “某物”、“某物”、“某物”、“某物” 但是,有时我会和你在一起 “某物”、“某物”、“某物” 我想创建一个正则表达式来解决这个问题,有人能提供什么吗 将从字符串中删除不是数字或文本的所有内容的内容,但当我删除“时,我需要确保它不是限制字符串的内容,因为我需要这些内容 所以从“som”ething“,”s“ometh8 ing”id expect=>“something”,“someth8 ing” 我在使用scala,但任何解决方案都会很好 谢谢!!简单的

我有一个带引号的简单csv,类似于:

“某物”、“某物”、“某物”、“某物”

但是,有时我会和你在一起

“某物”、“某物”、“某物”

我想创建一个正则表达式来解决这个问题,有人能提供什么吗

将从字符串中删除不是数字或文本的所有内容的内容,但当我删除
时,我需要确保它不是限制字符串的内容,因为我需要这些内容

所以从
“som”ething“,”s“ometh8 ing”
id expect=>
“something”,“someth8 ing”

我在使用scala,但任何解决方案都会很好

谢谢!!

简单的解决方案 Scala中的一个简单解决方案:

scala>val input=”““som”ething““s”ometh8 ing”
输入:String=“som”ething”,“s”ometh8 ing”
scala>val values=input.split(“\”,\”).map(u.filter(c=>c.isleterOrdigit | | c.isWhitespace))
值:数组[字符串]=数组(某物,某物)
scala>val输出=values.mkString(“\”、“\”、“\”、“\”、“\”)
输出:String=“something”,“someth8 ing”
假设您的值中从来没有“
”,“
”,但如果您这样做了,那么无论如何也无法明确地修复CSV

这不是最理想的解决方案速度或内存,但它又短又简单

编辑:正则表达式解决方案 如果您真的想要一些正则表达式,请享受:

scala>input.replaceAll(“(^“|“$|”,“|[\p{IsAlphabetic}\p{Digit}\p{Space}]))。”,“$1”)
res17:String=“something”,“something”
这将尝试在输入的开始或结束处匹配
”,或在任何其他地方匹配
”、“
”,或匹配您批准的任何字符。如果其中任何一个匹配,它将转到第一个捕获组。否则,它将匹配任何字符(
),但不会在组中捕获它,因此第一个组保持为空。然后,匹配的子字符串被替换为
$1
,这是第一个捕获组的内容

我仍然认为第一个解决方案更清晰,更容易理解

import re
csv_string = '"something","som"ething"","s"omething"'
for each_str in re.findall(r'(.*?)[\,\n]', csv_string):
    print(re.sub(r'\"', '', each_str)

在字符串的末尾添加换行符,这样您就可以在re.findall中包含字符串的最后一部分

您可以对每个值使用
'''+x.replace(''''','')+'
是否有任何特定的原因需要使用正则表达式?字符串替换会简单得多。正确转义的引号如何,例如
“a”“b”“cd”“