【问题标题】:Stripping string in python between quotes在引号之间剥离python中的字符串
【发布时间】:2016-11-04 18:10:50
【问题描述】:

我有一个字符串

text:u'tsod'

“text:U”是字符串的一部分。

我只想去掉单引号之间的字符。我知道如何根据位置进行剥离,但我不知道如何根据我的情况“'”中的值进行剥离,我只是想提取“tsod”

另外,python 将如何理解哪个是开始的“'”和哪个是结束的“'”,以便执行剥离,因为它们都是相同的字符。

【问题讨论】:

  • "text:u'tsod'".split("'")[1]
  • @falsetru 什么???就这么简单?天哪,蟒蛇太棒了!!奇迹般有效。谢谢 你能解释一下它是如何工作的吗?我的意思是最后的 1 是什么
  • @falsetru 是的,谢谢你的提示,我认为有一些 python 函数可以做到这一点,但似乎应用常识是秘密函数:-p 我很可怜!

标签: python string python-2.7


【解决方案1】:

你可以用逗号分隔"'"

>>> s = "text:u'tsod'".split("'")
>>> s
['text:u', 'tsod', '']
>>> s[1]
'tsod'

【讨论】:

  • 很好,我明白了,所以您将文本分成三部分,然后选择第二部分,ROFL 我很笨,谢谢您的好心先生!
  • @Anarach 任何人都可以很容易地忽略这些事情。感谢在我发布答案之前发表评论的 falsetru。
  • 谢谢你们,我最近学习了 python,感谢像你这样的人和 falsetru 这样的人,我很喜欢它
【解决方案2】:

如果您有多对引号,那么此解决方案可能会有所帮助:

import re
strng = "text:u'tsod';text2:u'tsod2';text3:u'tsod3'"
qlist = re.findall("\'(.*?)\'",strng)

然后qlist 将有:['tsod', 'tsod2', 'tsod3']

【讨论】:

  • 哇,这正是我需要的......谢谢
  • 不客气。正则表达式模块对于字符串操作非常有用。
【解决方案3】:

来自https://stackoverflow.com/a/69891301/1531728

使用循环/枚举方法 [Booboo2020] 进行测试,并从 [Avinash2021] 和 [user17405772021] 修改正则表达式,用于嵌入单引号的子字符串。

交换双引号和单引号的位置进行修改。

参考资料:

  • [Booboo2020]
  • [Avinash2021]
  • [用户17405772021]

我的解决办法是:

import re
my_substrings = []
test_string = "text:u'tsod'"
for values in re.findall("'(.+?)'", test_string):
    my_substrings.append(values)
print(" my_substrings are:",my_substrings,"=")

解决方案经过更广泛的测试。

import re
my_substrings = []
my_strings = ["SetVariables 'a' 'b' 'c' ", "d2efw   f 'first' +&%#$%'second',vwrfhir, d2e   u'third' dwedew", "'uno'?>P>MNUIHUH~!@#$%^&*()_+=0trewq'due'        'tre'fef    fre f", "       'uno''dos'      'tres'", "'unu''doua''trei'", "      'um'                    'dois'           'tres'                  "]
for current_test_string in my_strings:
    """
        For each test string, extract substrings embedded within
            single quotes.
    """
    for values in re.findall("'(.+?)'", current_test_string):
        # Append found embedded substring into the list of substrings.
        my_substrings.append(values)
    print(" my_substrings are:",my_substrings,"=")
    my_substrings = []

要使用的替代正则表达式是:

  • re.findall('"(.+?)"', current_test_string) [Avinash2021] [user17405772021]
  • re.findall("'(.*?)'", current_test_string) [Shelvington2020]
  • re.findall(r"'(.+?)'", current_test_string) [Lundberg2012] [Avinash2021]
  • re.findall(r"'(.*?)'", current_test_string) [Lundberg2012] [Avinash2021]
  • re.findall(r"'[']", current_test_string) [Muthupandi2019]
  • re.findall(r"'([^']*)'", current_test_string) [Pieters2014]
  • re.findall(r"'(?:(?:(?!(?
  • re.findall(r"'(.*?)(?
  • re.findall("'[^']*'", current_test_string) # 导致双引号保留在字符串中,但可以通过其他方式删除。 [Martelli2013]
  • re.findall("'([^']*)'", current_test_string) [jspcal2014]
  • re.findall("'(.*?)'", current_test_string) [akhilmd2016]

current_test_string.split("\"") 方法适用于字符串具有其中子字符串嵌入引号内的模式。 这是因为它在本例中使用双引号作为分隔符来标记字符串,并接受未嵌入双引号内的子字符串作为从字符串中提取的有效子字符串。

参考资料:

【讨论】:

    猜你喜欢
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多