【问题标题】:Escape a double quote with a double quote用双引号转义双引号
【发布时间】:2020-11-26 13:08:05
【问题描述】:

我正在尝试让 csv 编写器使用双引号作为转义字符,并在双引号出现在数据字段中时添加双引号。

我的函数是 Apache Beam 数据流作业的一部分。

任何建议将不胜感激。

输入记录: "ab"c","def"

我的函数返回的实际输出: abc", 定义

我想要达到的输出 "abc""", 定义

输入文件可能包含这样的记录:

1, "mystring1","mystring2"
2、“mystring3”、“mystring4”
3、"myst"ring5","mystring6"

通知记录 3 的字段中有双引号。

我想通过添加来转义双引号
在它之前加一个双引号,然后引用整个字段。

1,我的字符串1,我的字符串2
2、mystring3,mystring4
3, "myst""ring5",mystring6

我正在调用的函数

def parse_file(element):
      for line in csv.reader([element], quotechar='"', delimiter=','):
          output_str = io.StringIO()
          cw = csv.writer(output_str, quotechar='"', delimiter=',', escapechar='"', quoting=csv.QUOTE_MINIMAL)
          cw.writerow(line)
          output_str.close()
          clean_line = ', '.join(line)
          return clean_line

【问题讨论】:

  • 可以用'\'转义
  • 为什么你的代码中有 5/6 的不间断空格实体?
  • 嗨 Tasnuva,我需要使用双引号,因为输出是要加载到 BigQuery 中的文件。
  • 为了更好地阐明你应该添加更多的输入示例和预期的输出
  • 嗨@NoahResch 我添加了更多示例,希望对您有所帮助。

标签: python python-3.x google-cloud-dataflow apache-beam


【解决方案1】:

这是一个简单的解决方案,它采用字符串类型的输入元素。

vec = str('"ab"c","def""')
print(list(map(lambda x: '"' + x + '"' if '""' in x else x, [y.strip('"').replace('"', '""') for y in vec.split(',')])))

如果我理解了一些事情,我很抱歉

【讨论】:

    猜你喜欢
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多