AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 77024785
Accepted
sjri
sjri
Asked: 2023-09-02 00:43:03 +0800 CST2023-09-02 00:43:03 +0800 CST 2023-09-02 00:43:03 +0800 CST

如何克隆具有特定条件的细胞系?

  • 772

我在文本文件中有一些超链接。我想将第一行上的链接与下一个相邻行进行比较,并根据数字创建链接?。例如,

考虑下面的相邻链接

https://gp.to/ab/394/las69-02-09-2020/
https://gp.to/ab/394/las69-02-09-2020/4/

这里的输出文件将是:

https://gp.to/ab/394/las69-02-09-2020/
https://gp.to/ab/394/las69-02-09-2020/2/
https://gp.to/ab/394/las69-02-09-2020/3/
https://gp.to/ab/394/las69-02-09-2020/4/

同样,我需要对其他线路做同样的事情......

输入示例:

https://gp.to/ab/394/las69-02-09-2020/
https://gp.to/ab/394/las69-02-09-2020/4/
https://gp.to/ab/563/dimp-02-07-2023/
https://gp.to/ab/39443/omegs-02-07-2023/
https://gp.to/ab/39443/omegs-02-07-2023/3/
https://gp.to/ab/39443/lis-22-04-2018/
https://gp.to/ab/39443/lis-22-04-2018/2/
https://gp.to/ab/39443/madi-22-04-2018/
https://gp.to/ab/39443/madi-22-04-2018/5/

输出示例:

https://gp.to/ab/394/las69-02-09-2020/
https://gp.to/ab/394/las69-02-09-2020/2/
https://gp.to/ab/394/las69-02-09-2020/3/
https://gp.to/ab/394/las69-02-09-2020/4/
https://gp.to/ab/563/dimp-02-07-2023/
https://gp.to/ab/39443/omegs-02-07-2023/
https://gp.to/ab/39443/omegs-02-07-2023/2/
https://gp.to/ab/39443/omegs-02-07-2023/3/
https://gp.to/ab/39443/lis-22-04-2018/
https://gp.to/ab/39443/lis-22-04-2018/2/
https://gp.to/ab/39443/madi-22-04-2018/
https://gp.to/ab/39443/madi-22-04-2018/2/
https://gp.to/ab/39443/madi-22-04-2018/3/
https://gp.to/ab/39443/madi-22-04-2018/4/
https://gp.to/ab/39443/madi-22-04-2018/5/

我试过..

# Function to extract the number from a URL
def extract_number(url):
    parts = url.split('/')
    for part in parts[::-1]:
        if part.isdigit():
            return int(part)
    return None

# Read the input file
with open('input.txt', 'r') as input_file:
    lines = input_file.readlines()

output_lines = []

# Iterate through the input lines and generate output lines
for i in range(len(lines)):
    current_url = lines[i].strip()
    output_lines.append(current_url)

    if i + 1 < len(lines):
        next_url = lines[i + 1].strip()
        current_number = extract_number(current_url)
        next_number = extract_number(next_url)

        if current_number is not None and next_number is not None:
            for num in range(current_number + 1, next_number):
                new_url = current_url.rsplit('/', 1)[0] + '/' + str(num) + '/'
                output_lines.append(new_url)

# Write the output to a file
with open('output.txt', 'w') as output_file:
    output_file.writelines(output_lines)

但我没有得到想要的输出。

  • 2 2 个回答
  • 28 Views

2 个回答

  • Voted
  1. TimTeaFan
    2023-09-02T01:11:59+08:002023-09-02T01:11:59+08:00

    这是 R 中解决该问题的一种方法。我们创建一个函数extrapolate_link并使用purrr::accumulate它。然后我们的unlist结果。

    library(purrr)
    library(readr)
    library(stringr)
    
    z <- "https://gp.to/ab/394/las69-02-09-2020/
    https://gp.to/ab/394/las69-02-09-2020/4/
    https://gp.to/ab/563/dimp-02-07-2023/
    https://gp.to/ab/39443/omegs-02-07-2023/
    https://gp.to/ab/39443/omegs-02-07-2023/3/
    https://gp.to/ab/39443/lis-22-04-2018/
    https://gp.to/ab/39443/lis-22-04-2018/2/
    https://gp.to/ab/39443/madi-22-04-2018/
    https://gp.to/ab/39443/madi-22-04-2018/5/"
    
    
    extrapolate_link <- function(x, y) {
      x_ln <- length(x)
      if (x_ln > 1) {
        x <- x[x_ln]
      }
      res <- sub(pattern = x, replacement = "", x = y) |> 
        readr::parse_number()
      
      if (!is.null(attr(res, "problems"))){
        return(y)
      }
      if (is.numeric(res)) {
        return(paste0(x, rep(seq(4)[-1]), "/"))
      }
      stop("something went wrong.")
    }
    
    
    str_split(z, pattern = "\n") |>
      unlist() |> 
      accumulate(.f = extrapolate_link) |> 
      unlist()
    
    #>  [1] "https://gp.to/ab/394/las69-02-09-2020/"    
    #>  [2] "https://gp.to/ab/394/las69-02-09-2020/2/"  
    #>  [3] "https://gp.to/ab/394/las69-02-09-2020/3/"  
    #>  [4] "https://gp.to/ab/394/las69-02-09-2020/4/"  
    #>  [5] "https://gp.to/ab/563/dimp-02-07-2023/"     
    #>  [6] "https://gp.to/ab/39443/omegs-02-07-2023/"  
    #>  [7] "https://gp.to/ab/39443/omegs-02-07-2023/2/"
    #>  [8] "https://gp.to/ab/39443/omegs-02-07-2023/3/"
    #>  [9] "https://gp.to/ab/39443/omegs-02-07-2023/4/"
    #> [10] "https://gp.to/ab/39443/lis-22-04-2018/"    
    #> [11] "https://gp.to/ab/39443/lis-22-04-2018/2/"  
    #> [12] "https://gp.to/ab/39443/lis-22-04-2018/3/"  
    #> [13] "https://gp.to/ab/39443/lis-22-04-2018/4/"  
    #> [14] "https://gp.to/ab/39443/madi-22-04-2018/"   
    #> [15] "https://gp.to/ab/39443/madi-22-04-2018/2/" 
    #> [16] "https://gp.to/ab/39443/madi-22-04-2018/3/" 
    #> [17] "https://gp.to/ab/39443/madi-22-04-2018/4/"
    

    创建于 2023-09-01,使用reprex v2.0.2

    • 1
  2. Best Answer
    2023-09-02T01:33:21+08:002023-09-02T01:33:21+08:00

    这是另一种选择。它假设顺序是相关的,因此如果在中间不同的 URL 中找到相同的 url(或其基础,没有尾随数字),则它将是“新的”。

    library(dplyr)
    tibble(url=vec) %>%
      mutate(
        urlbase = sub("/\\d+/?$", "/", url),
        num = as.integer(sub("/$", "", stringr::str_extract(url, "(?<=/)(\\d+)/?$"))),
        grp = consecutive_id(urlbase)
      ) %>%
      group_by(grp, urlbase) %>%
      mutate(
        num = if (n() > 1) coalesce(num, row_number()) else num
      ) %>%
      reframe(
        num = seq.int(max(coalesce(num, 1L))),
        url = paste0(urlbase, if_else(num == 1L, "", paste0(as.character(num), "/")))
      )
    # # A tibble: 15 × 4
    #      grp urlbase                                    num url                                       
    #    <int> <chr>                                    <int> <chr>                                     
    #  1     1 https://gp.to/ab/394/las69-02-09-2020/       1 https://gp.to/ab/394/las69-02-09-2020/    
    #  2     1 https://gp.to/ab/394/las69-02-09-2020/       2 https://gp.to/ab/394/las69-02-09-2020/2/  
    #  3     1 https://gp.to/ab/394/las69-02-09-2020/       3 https://gp.to/ab/394/las69-02-09-2020/3/  
    #  4     1 https://gp.to/ab/394/las69-02-09-2020/       4 https://gp.to/ab/394/las69-02-09-2020/4/  
    #  5     2 https://gp.to/ab/563/dimp-02-07-2023/        1 https://gp.to/ab/563/dimp-02-07-2023/     
    #  6     3 https://gp.to/ab/39443/omegs-02-07-2023/     1 https://gp.to/ab/39443/omegs-02-07-2023/  
    #  7     3 https://gp.to/ab/39443/omegs-02-07-2023/     2 https://gp.to/ab/39443/omegs-02-07-2023/2/
    #  8     3 https://gp.to/ab/39443/omegs-02-07-2023/     3 https://gp.to/ab/39443/omegs-02-07-2023/3/
    #  9     4 https://gp.to/ab/39443/lis-22-04-2018/       1 https://gp.to/ab/39443/lis-22-04-2018/    
    # 10     4 https://gp.to/ab/39443/lis-22-04-2018/       2 https://gp.to/ab/39443/lis-22-04-2018/2/  
    # 11     5 https://gp.to/ab/39443/madi-22-04-2018/      1 https://gp.to/ab/39443/madi-22-04-2018/   
    # 12     5 https://gp.to/ab/39443/madi-22-04-2018/      2 https://gp.to/ab/39443/madi-22-04-2018/2/ 
    # 13     5 https://gp.to/ab/39443/madi-22-04-2018/      3 https://gp.to/ab/39443/madi-22-04-2018/3/ 
    # 14     5 https://gp.to/ab/39443/madi-22-04-2018/      4 https://gp.to/ab/39443/madi-22-04-2018/4/ 
    # 15     5 https://gp.to/ab/39443/madi-22-04-2018/      5 https://gp.to/ab/39443/madi-22-04-2018/5/ 
    

    数据

    vec <- c("https://gp.to/ab/394/las69-02-09-2020/", "https://gp.to/ab/394/las69-02-09-2020/4/", "https://gp.to/ab/563/dimp-02-07-2023/", "https://gp.to/ab/39443/omegs-02-07-2023/", "https://gp.to/ab/39443/omegs-02-07-2023/3/", "https://gp.to/ab/39443/lis-22-04-2018/", "https://gp.to/ab/39443/lis-22-04-2018/2/", "https://gp.to/ab/39443/madi-22-04-2018/", "https://gp.to/ab/39443/madi-22-04-2018/5/")
    
    • 1

相关问题

  • 将复制活动的序列号添加到 Blob

  • Packer 动态源重复工件

  • 选择每组连续 1 的行

  • 图形 API 调用列表 subscribedSkus 状态权限不足,但已授予权限

  • 根据列值创建单独的 DF 的函数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve