Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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中的字符串转换_Python_Regex_String_Escaping - Fatal编程技术网

Python中的字符串转换

Python中的字符串转换,python,regex,string,escaping,Python,Regex,String,Escaping,如何像这样转换字符串,我需要将两个双引号转换为\“ 返回应该是一个列表,这就是我遇到问题的地方。这就是我想到的 def parseCsv(sentence): result = [] new_result = [] sent_1 = list(sentence) new_str = "" new_w = "" for s in sent_1: if s != ',': new_str += " ".join

如何像这样转换字符串,我需要将两个双引号转换为\“

返回应该是一个列表,这就是我遇到问题的地方。这就是我想到的

def parseCsv(sentence):
    result = []
    new_result = []
    sent_1 = list(sentence)
    new_str = ""
    new_w = ""

    for s in sent_1:
        if s != ',':
            new_str += " ".join(s)
        elif new_str:
            result.append(new_str)
            new_str = ""
    result.append(new_str)

    for i, w in enumerate(result):
        if w.startswith("\"") or w.endswith("\""):
            new_w += result[i]
            if new_w.startswith("\"") and new_w.endswith("\""):
                x = new_w.replace('""', r'\"')
                new_result.append(x)
                new_w = ""
        else:
            new_result.append(w)
    return new_result
相反,我得到的是

['"Alexandra \\"Alex\\""', 'Menendez', 'alex.menendez@gmail.com', 'Miami', '1']

比如说,在将句子转换为列表并迭代每个元素之后,执行以下regsub

认为“a”是列表中的一个元素

a= "\"Alexadra \"\"Alex\"\"\""

print(a)

y=re.sub('\"{2}', '\\\"', a)

y will replace your double quotes with \" i.e a slash with single quote

If only single quote is required try

z=re.sub('\"{2}', '\"', a)

比如说,在将句子转换为列表并迭代每个元素之后,执行以下regsub

认为“a”是列表中的一个元素

a= "\"Alexadra \"\"Alex\"\"\""

print(a)

y=re.sub('\"{2}', '\\\"', a)

y will replace your double quotes with \" i.e a slash with single quote

If only single quote is required try

z=re.sub('\"{2}', '\"', a)

您无需执行任何操作。
csv
模块将正确加载您的数据:

import csv
from io import StringIO

infile = StringIO('"Alexandra ""Alex""",Menendez,alex.menendez@gmail.com,Miami,1')
reader = csv.reader(infile)
for row in reader:
    print(row)

# output:
# ['Alexandra "Alex"', 'Menendez', 'alex.menendez@gmail.com', 'Miami', '1']

您无需执行任何操作。
csv
模块将正确加载您的数据:

import csv
from io import StringIO

infile = StringIO('"Alexandra ""Alex""",Menendez,alex.menendez@gmail.com,Miami,1')
reader = csv.reader(infile)
for row in reader:
    print(row)

# output:
# ['Alexandra "Alex"', 'Menendez', 'alex.menendez@gmail.com', 'Miami', '1']

您可以尝试执行
for
循环来打印内容吗?顺便说一下,您可以使用Python的
string.split(',')
来形成由逗号分隔的单词列表。您可以尝试执行
for
循环来打印内容吗?您还可以使用Python的
string.split(','))
要形成一个由逗号分隔的单词列表,或者使用
csv
模块。或者使用
csv
模块。谢谢,但是我想在没有csv库的情况下使用它。@Arman为什么不使用
cvs
模块呢?有了这个模块,您就可以很容易地将每一行添加到
列表中或
dict
中的
for
loop.你对这些数据的最终目标是什么?可能是我没有表达我的最终目标是什么!我可以从表中选择一些类似“Alex;“这里需要的是我也需要得到双引号,如果有两个双引号,我需要用\”来转义它”。我想在没有CSV库的情况下完成它。这也是我想要的[“Alexandra\“Alex\”,“Menendez”,“Alex。menendez@gmail.com“,“Miami”,“1”]这与使用csv时得到的结果不同。@Arman您拥有的显然是csv数据,因此您应该使用
csv
模块对其进行解析。然后,如果您的数据库模块强制您手动转义任何内容,那么您应该找到一个不同的、更安全的数据库模块,它可以自动转义内容。如果您对如何将字符串解析为我需要的内容有任何建议,这将非常有用。谢谢,但我希望在没有csv库的情况下执行此操作。@Arman为什么不使用
cvs
模块?这样,您就可以轻松地将每一行添加到
for
循环中的
列表或
dict
。您对这些数据的最终目标是什么?可能是我没有表达我的最终目标是什么!我可以从表中选择一些类似于“Alex”的名称;这里的需要是我也需要获得双引号,如果有两个双引号,我需要用“\”进行转义。我希望在没有CSV库的情况下进行转义。这也是我想要的[“Alexandra\“Alex\”,“Menendez”,“Alex”。menendez@gmail.com“,”迈阿密“,”1“]它与您使用csv时得到的不同。@Arman您所拥有的显然是csv数据,因此您应该使用
csv
模块来解析它。然后,如果您的数据库模块强制您手动转义任何内容,您应该找到一个不同的、更安全的数据库模块,它会自动转义内容。好吧,我们不要进入数据库如果您对如何将字符串解析为我需要的内容有任何建议,这将非常有用。