<p>在我看来,您只希望在第一次出现<code>"</code>时拆分,并希望将所有{<cd1>}保留在输出列表的第二个元素中。在</p>
<p>下面是一个仅使用标准库的示例,不需要导入:</p>
<pre><code>result = []
with open('test.txt', 'r') as openfile:
for line in openfile:
# strip spaces and \n from the line
line = line.strip()
# split the line on "
my_list = line.split('"')
# only append first element of the list to the result
result.append(my_list[0].strip())
# rebuild the second part, adding back in the "
remainder = '"' + '"'.join([a for a in my_list[1:]])
# append the second part to the result
result.append(remainder)
print(result)
</code></pre>
<p>输出:</p>
^{pr2}$
<p>或者,如果打印输出列表的各个元素:</p>
<pre><code>for e in result:
print(e)
</code></pre>
<p>输出:</p>
<pre><code>asfdsafadfa
"Tabvxc "avcx"sdasaf" sadasfdf. sdsadsaf '0000000000000000000000000000000'."
</code></pre>
<p>[根据评论编辑]</p>
<p>根据注释,您可以使用<code>.split('"', 1)</code>,例如:</p>
<pre><code>with open('test.txt', 'r') as openfile:
for line in openfile:
# strip spaces and \n from the line
line = line.strip()
# split the line on " but only the fist one
result = line.split('"', 1)
# add in the " for the second element
result[1] = '"' + result[1]
</code></pre>
<p>[根据更新的问题和评论进行编辑]</p>
<p>OP评论:</p>
<blockquote>
<p>I want only the quoted part i.e remove "is something" from that
element of result List and make it [2] element </p>
</blockquote>
<p>随着问题在输入上用尾随的“is something”字符串更新,输出中需要省略该字符串,示例现在变成如下:</p>
<pre><code>with open('test.txt', 'r') as openfile:
for line in openfile:
# strip spaces and \n from the line
line = line.strip()
# split the line on " but only the fist one
result = line.split('"', 1)
# add in the " for the second element, remove trailing string
result[1] = '"{}"'.format(result[1].rsplit('"', 1)[0])
</code></pre>
<p>然而,一个文件可能包含多行,如果这种情况下,您需要建立一个输出列表,每行一个输出。现在的示例如下:</p>
<pre><code>result = []
with open('test.txt', 'r') as openfile:
for line in openfile:
if '"' in line:
# we can split the line on "
line = line.strip().split('"', 1)
if line[1][-1] == '"':
# no trailing string to remove
# pre-fix second element with "
line[1] = '"{}'.format(line[1])
elif '"' in line[1]:
# trailing string to be removed with .rsplit()[0]
# post- and pre-fix " for second element
line[1] = '"{}"'.format(line[1].rsplit('"', 1)[0])
else:
# no " in line, return line as one element list
line = [line.strip()]
result.append(line)
# result is now a list of lists
for line in result:
for e in line:
print(e)
</code></pre>