gpt4 book ai didi

python - 双引号字符串操作

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:25 25 4
gpt4 key购买 nike

我有一些来自 ASCII 文件的输入数据,这些数据使用双引号来封装字符串,并且在这些字符串中仍然使用双引号,例如:

"Reliable" "Africa" 567.87 "Bob" "" "" "" "S 05`56'21.844"" "No Shift"

注意坐标中使用的双引号。

所以我一直在使用:

valList = shlex.split(line)

但是 shlex 与用作坐标中第二个的双引号混淆了。

我一直在将 '\"\"' 查找并替换为 '\\\"\"'。当然,这也会将空字符串转换为 \"" ,因此我会查找并替换(这次使用空格) '\\\"\"''\"\""'。这并不是最有效的方法!

关于处理坐标中的双引号有什么建议吗?

最佳答案

我会这样做:

我会将这行文本视为 csv 文件。然后根据RFC 4180 :

  1. If double-quotes are used to enclose fields, then a double-quoteappearing inside a field must be escaped by preceding it withanother double quote. For example:

    "aaa","b""bb","ccc"

然后您需要做的就是向您的坐标添加另一个 "。因此它看起来像这样 "S 0556'21.844"""(注意额外的引用)然后您可以使用标准csv`模块将其分解并提取必要的信息。

    >>> from StringIO import StringIO
>>> import csv
>>>
>>> test = '''"Reliable" "Africa" 567.87 "Bob" "" "" "" "S 05`56'21.844""" "No Shift"'''
>>> test_obj = StringIO(test)
>>> reader = csv.reader(test_obj, delimiter=' ', quotechar='"', quoting=csv.QUOTE_ALL)
>>> for i in reader:
... print i
...

输出将是:

['Reliable', 'Africa', '567.87', 'Bob', '', '', '', 'S 05`56\'21.844"', 'No Shift']

关于python - 双引号字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com