【问题标题】:Editing Multiline Strings in Python在 Python 中编辑多行字符串
【发布时间】:2019-02-13 19:40:37
【问题描述】:

这里是 Python 的新手。我正在运行 selenium Web 驱动程序以从网站查询一些信息(只能从我的组织访问,是的 SQL 查询会好得多,但这是我目前正在做的工作)。我正在使用 Selenium 的 .text 方法从表中检索文本,而我 print(XXX.text) 则返回类似这样的内容。

XXX.pdf
[Remove]
XXX.pdf
[Remove]
etc...

问题是我想删除 [Remove] 以便我留下类似的东西:

XXX.pdf
XXX.pdf

甚至更好

XXX.pdf, XXX.pdf

这是我迄今为止尝试过的,但没有奏效。

dataElement = driver.find_element_by_css_selector('''blah blah blah''')                                             
datasheets = str(dataElement.text)
datasheets.replace('[Remove]','')
print(datasheets)

Python 3.5 硒 2

感谢您的帮助。 :)

【问题讨论】:

    标签: python string python-3.x selenium replace


    【解决方案1】:
    In [26]: data = '''\
        ...: XXX.pdf
        ...: [Remove]
        ...: XXX.pdf
        ...: [Remove]\
        ...: '''
    
    In [27]: def func(string, rep):
        ...:     return ', '.join([x for x in string.split('\n') if x != rep])
        ...: 
    
    In [28]: func(data, '[Remove]')
    Out[28]: 'XXX.pdf, XXX.pdf'
    

    你可以使用这样的东西。

    【讨论】:

    • 我不确定如何使用此代码。我尝试运行这个给出语法错误的确切代码。我尝试删除输入和输出以及括号内的数字,并在打印字符串“数据”时收到与输入完全相同的字符串。我错过了什么?
    • 我编辑了我的答案。只需将数据和要删除的数据部分传递给名为 func 的函数。
    • 工作就像一个魅力,如果我能投票给你的答案,我会的。
    【解决方案2】:

    它在结果中打印了什么?也许你忘记了什么。

    dataElement = driver.find_element_by_css_selector('''blah blah blah''')
    datasheets = str(dataElement.text) datasheets = datasheets.replace('[Remove]','') print(datasheets)

    【讨论】:

    • 它打印了我的第一个代码 sn-p,在我尝试删除不需要的字符串部分之前和之后
    • @JohnKulick 这是因为 .replace 方法不会更改您的字符串,它只是返回带有替换部分的新字符串,但您没有将其分配给某个变量。你需要这样写:dataElement = driver.find_element_by_css_selector('''blah blah blah''')datasheets = str(dataElement.text)datasheets = datasheets.replace('[Remove]','')print(datasheets)
    【解决方案3】:

    试试这个:

    l = s.split('[Remove]')
    s = ', '.join(l)
    

    【讨论】:

      【解决方案4】:

      你需要做这样的事情来解析你的输出。

      dataElement = driver.find_element_by_css_selector("blah blah blah")
      #I don't know what type is this one, but I asume it's a iterable. 
      
      removes = Set(["[remove]","[remove1]", "[remove2]"])
      #You can have a set of the strings you want to remove
      for data in dataElement:
      #for every unit in this iterable variable we'll do the next lines
          if str(data) in removes == False:
          #if something it is not actually in the set of unwanted stuff.                          
              print(str(data))
              #this is your useful output
              #whatever you wanna do to the filtered output.
          else:
              #this is the stuff you don't want to use, the [remove] ones
      

      我希望这能给你一个提示。问候。

      【讨论】:

        猜你喜欢
        • 2018-12-11
        • 1970-01-01
        • 2021-01-13
        • 2021-09-18
        • 2021-08-01
        • 2011-12-13
        • 2021-10-28
        • 1970-01-01
        • 2011-02-25
        相关资源
        最近更新 更多