【发布时间】:2019-10-25 16:54:08
【问题描述】:
我试图用一组弯曲的开引号和闭引号(“和”)替换给定字符串中的任何普通直引号(“)。这意味着第一个、第三个等“将被替换为”,并且第二个,第四个等“将被替换为”。
我已经尝试找到第一个引号的索引,创建一个拼接到它,并将该拼接中的所有“”替换为“。我通过从这个新引号索引+1到末尾创建一个拼接来遵循这一点并将所有“替换为”。问题是,我不能确定提供的字符串中 "s 的长度或数量,因此需要找到一种方法来循环这样的某种系统。
这仅适用于正确转换带有 2 个引号的字符串:
def convert_quotes(text):
'''(str) -> str
Convert the straight quotation mark into open/close quotations.
>>> convert_quotes('"Hello"')
'“Hello”'
>>> convert_quotes('"Hi" and "Hello"')
'“Hi” and “Hello”'
>>> convert_quotes('"')
'“'
>>> convert_quotes('"""')
'“”“'
>>> convert_quotes('" "o" "i" "')
'“ ”o“ ”i“ ”'
'''
find=text.find('"')
if find != -1:
for i in text:
#first convert first found " to “
text1 = text[:find+1]
replace1=text1.replace('"','“')
text2 = text[find+1:]
replace2=text2.replace('"','”')
text=replace1+replace2
return text
从我的文档字符串中可以看出,'"Hello" 应该变成“Hello”,但是 '" "o" "i" "' 应该变成“ ”o“ ”i“ ”。
【问题讨论】:
-
你也许可以遍历你的字符串并将所有出现的 " 的索引存储在一个列表中,然后用 " 替换所有偶数索引,用 " 替换奇数索引?
-
这对我来说是最理想的方式,因为我在技术上还没有学习 import re 并且能够使用 enumerate?我的问题是,从技术上讲,如果打开它们,它们并不都有偶数索引,如果关闭则它们是奇数索引,反之亦然。除非我错过了什么?
-
为了问题的缘故,我会用
(和)在较小的屏幕上替换quits,很难看出区别。 -
@sarahsss,你可以先找到 " 的索引并将它们存储在一个列表中。所以你会有类似 index = [12, 17, 29, 35] 的东西。然后你可以遍历此索引列表带有 for 循环(类似于... for i in xrange(len(indexes)) 并检查当前迭代是偶数还是奇数(如果 i % 2 == 0 -> 偶数)。如果偶数.. . 你可以用“替换那个索引,如果奇怪,用”替换。这样更有意义吗?
标签: python python-3.x string loops